我是 Apache Drill 的新手。
场景是这样的:
我有一个 S3 存储桶,我在其中放置了名为 test.csv 的 csv 文件。我已经按照官方网站的说明安装了 Apache Drill。
我按照本教程:https : //drill.apache.org/blog/2014/12/09/running-sql-queries-on-amazon-s3/创建一个 S3 插件。
我启动 Drill,使用正确的“工作区”(使用:use my-s3;),但是当我尝试从 test.cav 文件中选择记录时发生错误:
未找到表 's3./test.csv'。
谁能帮我?谢谢!
我有以下JSON(粗略),我想分别从header
和defects
字段中提取信息:
{
"file": {
"header": {
"timeStamp": "2016-03-14T00:20:15.005+04:00",
"serialNo": "3456",
"sensorId": "1234567890",
},
"defects": [
{
"info": {
"systemId": "DEFCHK123",
"numDefects": "3",
"defectParts": [
"003", "006", "008"
]
}
}
]
}
}
Run Code Online (Sandbox Code Playgroud)
我曾尝试使用file.header.timeStamp
etc 访问各个元素但返回null
.我尝试过使用,flatten(file)
但这给了我
无法将org.apache.drill.exec.vector.complex.MapVector转换为org.apache.drill.exec.vector.complex.RepeatedValueVector
我已经调查了kvgen()
但是看不出这对我的情况如何.我试过kvgen(file.header)
但是这让我受益匪浅
kvgen函数仅支持简单映射作为输入
这无论如何都是我所期待的.
有谁知道我能得到header
并且defects
,这样我就可以处理其中包含的信息.理想情况下,我只是选择信息,header
因为它不包含数组或地图,因此我可以按原样获取单个记录.因为defects
我只是FLATTEN(defectParts)
用来获得有缺陷部件的表格.
任何帮助,将不胜感激.
我的数据是适当的格式,没有Apache支持的数据.有没有关于如何编写我自己的存储插件来处理这些数据的教程.
当我输入
$ drillbit.sh start
它告诉我这个错误:
ERROR: Java 1.7 or later is required to run Apache Drill.
Run Code Online (Sandbox Code Playgroud)
虽然我有最新版本的java
$ java -version
java version "1.8.0_144"
Java(TM) SE Runtime Environment (build 1.8.0_144-b01)
Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)
Run Code Online (Sandbox Code Playgroud)
我的$ JAVA_HOME也在.profile中正确设置
什么可能导致这样的问题?
Apache Drill 可以读取 ORC 文件吗?
此链接解释了如何在 Docker 上运行 Apache Drill。
docker run -i --name drill-1.18.0 -p 8047:8047 -t apache/drill:1.18.0 /bin/bash
Run Code Online (Sandbox Code Playgroud)
我需要在 Docker Compose 上运行它,所以我进行了设置:
version: "3.0"
services:
drill:
image: apache/drill:latest
ports:
- "8047:8047"
volumes:
- vol_dask_data:/data
entrypoint:
- /bin/bash
Run Code Online (Sandbox Code Playgroud)
并像这样开始:
docker-compose up -d
Run Code Online (Sandbox Code Playgroud)
但是容器结束时没有执行任何操作,即使我启动 docker compose with -d
.
如何在 Docker Compose 中启动 Drill?
有谁知道如何从 python 建立到 Apache 钻的连接?
通常,通过 pyodbc 库的连接是这样的:
connection = pyodbc.connect(connectionString)
Run Code Online (Sandbox Code Playgroud)
连接字符串的格式通常为“DSN = *; UID = * ; PWD = ***”。我只是不确定如何在此处设置连接字符串。
谢谢!
我无法在 Windows 机器上启动嵌入式钻头并收到以下错误。我已经检查了存在 Jackson-databind-2.7.1.jar 的 3rd 方文件夹中的罐子,仍然说找不到类异常。你能帮我吗?
错误:启动嵌入式 Drillbit 失败:UNSUPPORTED_OPERATION 错误:尝试加载 org.apache.drill.exec.store.StoragePluginRegistry 路径上请求的类型类的实例时失败。
[错误 ID:4e654256-f63d-434f-8f41-981892a776b5] (state=,code=0) java.sql.SQLException:启动嵌入式 Drillbit 失败:UNSUPPORTED_OPERATION 错误:尝试加载类型为 org 的类的实例时失败。在路径drill.exec.storage.registry 请求的apache.drill.exec.store.StoragePluginRegistry。
[Error Id: 4e654256-f63d-434f-8f41-981892a776b5 ] 在 org.apache.drill.jdbc.impl.DrillConnectionImpl.(DrillConnectionImpl.java:120) 在 org.apache.drill.jdbc.impl.DrillConnection(FactoryDrillJdbc.impl.DrillJdbc. .java:64) 在 org.apache.drill.jdbc.impl.DrillFactory.newConnection(DrillFactory.java:69) 在 net.hydromatic.avatica.UnregisteredDriver.connect(UnregisteredDriver.java:126) 在 org.apache.drill。 jdbc.Driver.connect(Driver.java:72) at sqlline.DatabaseConnection.connect(DatabaseConnection.java:167) at sqlline.DatabaseConnection.getConnection(DatabaseConnection.java:213) at sqlline.Commands.connect(Commands.java:1083) ) at sqlline.Commands.connect(Commands.java:1015) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun。reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at sqlline.ReflectiveCommandHandler.execute (ReflectiveCommandHandler.java:36) at sqlline.SqlLine.dispatch(SqlLine.java:742) at sqlline.SqlLine.initArgs(SqlLine.java:528) at sqlline.SqlLine.begin(SqlLine.java:596) at sqlline.SqlLine .start(SqlLine.java:375) at sqlline.SqlLine.main(SqlLine.java:268) 引起:org.apache.drill.common.exceptions.UserException: UNSUPPORTED_OPERATION ERROR: 尝试加载类的实例时失败在路径drill.exec.storage.registry 请求的类型org.apache.drill.exec.store.StoragePluginRegistry。NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) …
我下载了 Apache Drill v1.8,对其进行了编辑conf/drill-override.conf
以进行以下更改:
drill.exec: {
cluster-id: "drillbits1",
zk.connect: "10.178.23.140:2181,10.178.23.140:2182,10.178.23.140:2183,10.178.23.140:2184"
}
Run Code Online (Sandbox Code Playgroud)
..zookeeper 集群实际上由 4 个在同一台机器上启动的 Zookeeper 实例组成,我正在尝试启动 Drill。(即我只使用一台机器作为 Apache Drill 和 Zookeeper 的集群,机器的 IP 是10.178.23.140)
所以我不断收到这个错误:
Exception in thread "main" org.apache.drill.exec.exception.DrillbitStartupException: Failure during initial startup of Drillbit.
at org.apache.drill.exec.server.Drillbit.start(Drillbit.java:295)
at org.apache.drill.exec.server.Drillbit.start(Drillbit.java:271)
at org.apache.drill.exec.server.Drillbit.main(Drillbit.java:267)
Caused by: org.apache.drill.exec.exception.DrillbitStartupException: Drillbit is disallowed to bind to loopback address in distributed mode.
at org.apache.drill.exec.service.ServiceEngine.checkLoopbackAddress(ServiceEngine.java:186)
at org.apache.drill.exec.service.ServiceEngine.start(ServiceEngine.java:146)
at org.apache.drill.exec.server.Drillbit.run(Drillbit.java:119)
at org.apache.drill.exec.server.Drillbit.start(Drillbit.java:291)
... 2 more
Run Code Online (Sandbox Code Playgroud)
为什么钻头会抱怨绑定到回送地址?!
CTAS 命令是:CREATE TABLE new_table_name AS <query>;
但是,在创建表之前我必须创建架构。我无法做到这一点,而且我无法使用现有架构,因为对于每个已安装的架构,我都会收到 error:
schema cp is immutable
。因此,解决方案是创建新模式。问题是我找不到这个命令的任何示例。
我的 JSON 文件是一个时间戳字段,它采用 UNIX 上传时间戳格式,如1501580484655
. 这将转换为格林威治标准时间:01-08-2017 9:41:24.655
AM
我尝试将此时间戳转换为人类可读的时间格式,直到毫秒不起作用。
到目前为止,我已经尝试过以下方法:
1- select TO_DATE(1501580484655) from (VALUES(1));
O/P 2017-08-01
到目前为止还可以,但我想要到毫秒。
2- select TO_DATE(1501580484655,'yyyy-MM-dd HH:mm:ss.SSS') from (VALUES(1));
O/P 是: Error: SYSTEM ERROR: IllegalArgumentException: Invalid format: "1501580484655" is malformed at "4655"
3- select TO_DATE(1501580484,'yyyy-MM-dd HH:mm:ss.SSS') from (VALUES(1));
O/P 是: Error: SYSTEM ERROR: IllegalArgumentException: Invalid format: "1501580484" is malformed at "4"
4- select TO_DATE(150158048,'yyyy-MM-dd HH:mm:ss.SSS') from (VALUES(1));
O/P 是: Error: SYSTEM ERROR: IllegalArgumentException: Invalid format: "150158048" is too short
5- SELECT TO_TIMESTAMP(1501580484655) …