代码之家  ›  专栏  ›  技术社区  ›  rellocs wood

如何从java查询druid数据?

  •  0
  • rellocs wood  · 技术社区  · 8 年前

    5 回复  |  直到 8 年前
        1
  •  2
  •   Jainik    7 年前

    请结帐 DruidDry . 这是一个基于java的实用程序库,用于查询druid。

    Druid dry支持使用Java API编写查询json和查询代理节点。目前,它不支持几个复杂的JSON,也不支持摄入规范。但是,它确实支持最常见的操作,如选择、扫描、分组等。

    您的项目需要在Java 8或更高版本上运行,才能使用druid干式客户端。

        2
  •  1
  •   ShashankNiranjan    6 年前

    这里有一个简单的 Spring Boot Java应用程序 哪些查询 德鲁伊 数据使用 并打印查询中的第一行。

    假设Druid在本地运行,并且表名中已有数据“ druid_表 “其中有一列

    FlinkDruidApplication。Java语言

    @SpringBootApplication
    public class FlinkDruidApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(FlinkDruidApplication.class, args);
            Logger log = LoggerFactory.getLogger("FlinkDruidApplication");
            ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
            DataSet<Row> dbData =
                    env.createInput(
                            JDBCInputFormat
                                    .buildJDBCInputFormat()
                                    .setDrivername("org.apache.calcite.avatica.remote.Driver")
                                    .setDBUrl("jdbc:avatica:remote:url=http://localhost:8082/druid/v2/sql/avatica/")
                                    .setUsername("null")
                                    .setPassword("null")
                                    .setQuery(
                                            "SELECT sourceIP FROM druid_table"
                                    )
                                    .setRowTypeInfo((RowTypeInfo) Types.ROW(Types.STRING))
                                    .finish()
                    );
    
            try {
    
                log.info("Printing first IP :: {} " + dbData.collect().iterator().next());
            } catch (Exception e) {
                log.error(e.getMessage());
            }
    
    
        }
    
    }
    

    pom。xml

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.1.8.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
        <groupId>com.shashank</groupId>
        <artifactId>FlinkDruid</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <name>FlinkDruid</name>
        <description>Flink Druid Connection</description>
    
        <properties>
            <java.version>1.8</java.version>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter</artifactId>
            </dependency>
    
            <!-- https://mvnrepository.com/artifact/org.apache.flink/flink-core -->
            <dependency>
                <groupId>org.apache.flink</groupId>
                <artifactId>flink-core</artifactId>
                <version>1.9.0</version>
            </dependency>
    
            <!-- https://mvnrepository.com/artifact/org.apache.flink/flink-streaming-java -->
            <dependency>
                <groupId>org.apache.flink</groupId>
                <artifactId>flink-streaming-java_2.12</artifactId>
                <version>1.9.0</version>
                <scope>provided</scope>
            </dependency>
    
            <!-- https://mvnrepository.com/artifact/org.apache.flink/flink-java -->
            <dependency>
                <groupId>org.apache.flink</groupId>
                <artifactId>flink-java</artifactId>
                <version>1.9.0</version>
            </dependency>
    
            <!-- https://mvnrepository.com/artifact/org.apache.flink/flink-clients -->
            <dependency>
                <groupId>org.apache.flink</groupId>
                <artifactId>flink-clients_2.12</artifactId>
                <version>1.9.0</version>
            </dependency>
    
            <!-- https://mvnrepository.com/artifact/org.apache.flink/flink-jdbc -->
            <dependency>
                <groupId>org.apache.flink</groupId>
                <artifactId>flink-jdbc_2.12</artifactId>
                <version>1.8.1</version>
            </dependency>
            <!-- https://mvnrepository.com/artifact/org.apache.calcite.avatica/avatica-core -->
            <dependency>
                <groupId>org.apache.calcite.avatica</groupId>
                <artifactId>avatica-core</artifactId>
                <version>1.15.0</version>
            </dependency>
    
    
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    
    </project>
    
        3
  •  1
  •   Ankita Singh    7 年前

    您也可以使用 druidry ,基于Java的实用程序库

        4
  •  0
  •   Gian Merlino    8 年前

    最简单的事情可能是 Druid SQL over JDBC

        5
  •  0
  •   Collin Krawll    4 年前

    下面是如何使用JDBC和Calcite Avatica查询Druid:

    添加方解石Avatica

    将方解石Avatica添加到POM中:

    ...
    <dependency>
        <groupId>org.apache.calcite.avatica</groupId>
        <artifactId>avatica</artifactId>
        <version>1.21.0</version>
    </dependency>
    ...
    

    示例代码

    //  ---------- Set up the Connection -------- //
    String url = "jdbc:avatica:remote:url=https://example.com:8888/druid/v2/sql/avatica/";
    Properties properties = new Properties();
    properties.setProperty("user", "myusername");
    properties.setProperty("password", "mypassword");
    Connection conn = DriverManager.getConnection(url, properties);
    
    //  --------------- Query Druid ------------- //
    String sql = 
        "SELECT page, COUNT(*) AS Edits \n"
        + "FROM \"wikipedia\" \n"
        + "WHERE \"__time\" BETWEEN TIMESTAMP '2015-09-12 00:00:00' AND TIMESTAMP '2015-09-13 00:00:00' \n"
        + "GROUP BY page \n"
        + "ORDER BY Edits DESC \n"
        + "LIMIT 10";
    Statement stmt = conn.createStatement();
    ResultSet rs = stmt.executeQuery(sql);
    
    // Do something with the query results here.
    

    请参阅此处的文档: https://druid.apache.org/docs/latest/querying/sql.html#jdbc

    推荐文章