标签: apache-drill

Apache Drill通过Java连接

在整个Apache Drill的Wiki中,我只能看到通过SqlLine客户端运行的查询.除了REST API之外,是否有任何编程方式在Drill中运行查询?任何样品或指针?

或者它是否与使用JDBC驱动程序运行SQL查询等效?

apache hadoop apache-drill

6
推荐指数
1
解决办法
4476
查看次数

在Spark SQL中使用目录进行分区修剪

我有写在目录结构中的数据文件(在此示例中为json,但也可能是avro):

dataroot
+-- year=2015
    +-- month=06
        +-- day=01
            +-- data1.json
            +-- data2.json
            +-- data3.json
        +-- day=02
            +-- data1.json
            +-- data2.json
            +-- data3.json
    +-- month=07
        +-- day=20
            +-- data1.json
            +-- data2.json
            +-- data3.json
        +-- day=21
            +-- data1.json
            +-- data2.json
            +-- data3.json
        +-- day=22
            +-- data1.json
            +-- data2.json
Run Code Online (Sandbox Code Playgroud)

使用spark-sql创建一个临时表:

CREATE TEMPORARY TABLE dataTable
USING org.apache.spark.sql.json
OPTIONS (
  path "dataroot/*"
)
Run Code Online (Sandbox Code Playgroud)

查询表效果很好,但到目前为止,我无法使用目录进行修剪。

有没有一种方法可以将目录结构注册为分区(不使用Hive)以避免在查询时扫描整个树?假设我想比较每个月第一天的数据,并且只读取这几天的目录。

使用Apache Drill,我可以在查询期间使用目录作为谓词,dir0等等。是否可以使用Spark SQL做类似的事情?

apache-spark apache-spark-sql apache-drill

5
推荐指数
1
解决办法
3076
查看次数

Apache Drill - 与嵌入式模式下钻取的连接[java]

我想通过Java应用程序连接到Drill,到目前为止我尝试使用JDBC来执行此操作,并且我使用的是https://github.com/vicenteg/DrillJDBCExample中的示例,但是...当我更改DB_URL静态时变量为 "jdbc:drill:zk = local"并启动app我得到异常:

java.sql.SQLNonTransientConnectionException:不支持使用Drill的jdbc-all JDBC驱动程序Jar文件在嵌入模式下运行钻取.

到目前为止,我没有找到任何解决方法.知道如何在嵌入模式下连接Drill吗?到目前为止,我不想设置分布式模式.

网上真的没什么关系.

任何帮助,将不胜感激!

java jdbc apache-drill

5
推荐指数
3
解决办法
5755
查看次数

通过JDBC集成Spark SQL和Apache Drill

我想从使用Apache Drill在CSV数据(在HDFS上)执行的查询结果中创建Spark SQL DataFrame.我成功配置了Spark SQL,使其通过JDBC连接到Drill:

Map<String, String> connectionOptions = new HashMap<String, String>();
connectionOptions.put("url", args[0]);
connectionOptions.put("dbtable", args[1]);
connectionOptions.put("driver", "org.apache.drill.jdbc.Driver");

DataFrame logs = sqlc.read().format("jdbc").options(connectionOptions).load();
Run Code Online (Sandbox Code Playgroud)

Spark SQL执行两个查询:第一个获取模式,第二个查询实际数据:

SELECT * FROM (SELECT * FROM dfs.output.`my_view`) WHERE 1=0

SELECT "field1","field2","field3" FROM (SELECT * FROM dfs.output.`my_view`)
Run Code Online (Sandbox Code Playgroud)

第一个是成功的,但在第二个中Spark包含双引号内的字段,这是Drill不支持的内容,因此查询失败.

有人设法使这种集成工作吗?

谢谢!

hadoop jdbc apache-spark apache-spark-sql apache-drill

5
推荐指数
1
解决办法
1053
查看次数

在具有相同插件和相同数据类型的SQL Server表上连接时出现问题

我想使用相同的存储插件加入两个表.但其中一列显示空值.我正在使用此查询: -

select * from SqlServer.test_mopslive.reports as Reports join     
 SqlServer.test_mopslive.reportsetting as ReportSetting on Reports.ID = ReportSetting.ID
Run Code Online (Sandbox Code Playgroud)

SqlServer是存储插件名称,test_mopslive是数据库名称reports,reportsetting是表名称.

执行此查询时T_ID显示Null.

但如果我使用两个不同的存储插件名称和相同的凭据,它可以正常工作.

表格1:-

create table Reports (ID bigint, Name varchar(25)); 

insert into Reports values (29, 'SqlThree'); 
insert into Reports values (30, 'SqlTwo'); 
insert into Reports values (31, 'SqlThree'); 
Run Code Online (Sandbox Code Playgroud)

TABLE 2:-

CREATE TABLE ReportSetting 
( 
P_id bigint not null auto_increment primary key, 
Name varchar(25), 
ID bigint, 
CONSTRAINT fk_ID FOREIGN KEY (ID) 
REFERENCES Reports(ID)); 

insert into ReportSetting …
Run Code Online (Sandbox Code Playgroud)

sql-server apache-drill

5
推荐指数
1
解决办法
340
查看次数

Apache Drill查询HBase表

我使用drill-embedded来执行SQL,我可以在HBase中看到这些表.这是终端输出..

在此输入图像描述 但是,我无法对它们执行查询,这是引发以下错误:

 0: jdbc:drill:zk=local> SELECT * FROM students;


Error: SYSTEM ERROR: IllegalAccessError: tried to access method
com.google.common.base.Stopwatch.<init>()V from class
org.apache.hadoop.hbase.zookeeper.MetaTableLocator

[Error Id: 9c656263-c774-4aaf-a789-d4e374adb69b on localhost:31010]
(state=,code=0)
Run Code Online (Sandbox Code Playgroud)

请提前告知我要对Drill执行查询所要做的事情.

hadoop hbase apache-drill

5
推荐指数
1
解决办法
596
查看次数

如何在 SqlAlchemy 中转义表名

我正在研究 Apache Drill 的 SQLAlchemy 方言,但遇到了一个我似乎无法弄清楚的问题。

基本问题是 SQLAlchemy 正在生成如下查询:

SELECT `field1`, `field2`
FROM dfs.test.data.csv LIMIT 100
Run Code Online (Sandbox Code Playgroud)

失败是因为data.csv需要在它周围加上反引号,如下所示:

SELECT `field1`, `field2`
FROM dfs.test.`data.csv` LIMIT 100
Run Code Online (Sandbox Code Playgroud)

我已经visit_()在方言的编译器中定义了各种函数,但这些似乎没有效果。

python sqlalchemy apache-drill

5
推荐指数
1
解决办法
396
查看次数

是否可以在不依赖Hadoop和HDFS的情况下使用Java读写Parquet?

我一直在寻找这个问题的解决方案。

在我看来,如果不依赖HDFS和Hadoop,就无法在Java程序中嵌入读写Parquet格式。它是否正确?

我想在Hadoop集群之外的客户端计算机上进行读写。

我开始对Apache Drill感到兴奋,但是看来它必须作为单独的进程运行。我需要的是一种使用Parquet格式读写文件的过程中功能。

java hadoop data-formats parquet apache-drill

5
推荐指数
1
解决办法
3117
查看次数

在Windows 10上以嵌入模式启动Apache Drill时出错

我试图在Windows 10 x64(使用Oracle JVM 1.8.0_131)的嵌入式模式下启动Apache Drill 1.10.启动命令时

sqlline.bat -u "jdbc:drill:zk=local"
Run Code Online (Sandbox Code Playgroud)

我得到以下内容:

Error during udf area creation [/C:/Users/<user>/drill/udf/registry] on file system [file:///] (state=,code=0)
Run Code Online (Sandbox Code Playgroud)

所以,经过一些谷歌搜索后,我以这种方式更改了drill-override.conf文件:

drill.exec: {
  cluster-id: "drillbits1",
  zk.connect: "localhost:2181",
  udf: {
    # number of retry attempts to update remote function registry
    # if registry version was changed during update
    retry-attempts: 10,
    directory: {
      # Override this property if custom file system should be used to create remote directories
      # instead of default taken from Hadoop configuration
      fs: "file:///",
      # Set …
Run Code Online (Sandbox Code Playgroud)

apache-drill

5
推荐指数
1
解决办法
1091
查看次数

apache-drill-1.12.0“无法启动嵌入式 Drillbit”和“当前没有连接错误”(Windows 10)

我在 Windows 10 上使用 apache-drill-1.12.0。发送任何查询时出现“无当前连接”错误。此外,应该在 localhost:8047 上运行的钻取 Web 控制台不起作用。

我在 StackOverflow 上搜索了很多关于正确设置 JAVA_HOME 环境变量以避免错误的答案。

我已经正确设置了 JAVA_HOME 系统变量,这是证明。

C:\Users\Dinesh>java -version
java version "1.8.0_171"
Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)

C:\Users\Dinesh>javac -version
javac 1.8.0_171

C:\Users\Dinesh>echo %JAVA_HOME%
C:\Program Files\Java\jdk1.8.0_171
Run Code Online (Sandbox Code Playgroud)

现在这是以下一组错误,我在 Windows 10 上遇到了 apache 钻孔。

C:\Users\Dinesh\Desktop\Drill\apache-drill-1.12.0\bin>sqlline.bat -u "jdbc:drill:zk=local"
DRILL_ARGS - " -u jdbc:drill:zk=local"
HADOOP_HOME not detected...
HBASE_HOME not detected...
Calculating Drill classpath...
Error: Failure in starting embedded Drillbit: java.lang.RuntimeException: Unable to deserialize "/tmp/drill/sys.storage_plugins/openTSDB.sys.drill" (state=,code=0) …
Run Code Online (Sandbox Code Playgroud)

windows-10 apache-drill

5
推荐指数
1
解决办法
1445
查看次数