标签: apache-drill

Apache Drill:在 s3 存储桶上找不到表

我是 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'。

谁能帮我?谢谢!

amazon-s3 apache-drill

4
推荐指数
1
解决办法
1894
查看次数

Apache Drill中无嵌套的嵌套JSON结构

我有以下JSON(粗略),我想分别从headerdefects字段中提取信息:

{
  "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.timeStampetc 访问各个元素但返回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)用来获得有缺陷部件的表格.

任何帮助,将不胜感激.

json apache-drill

4
推荐指数
1
解决办法
1612
查看次数

如何为apache drill编写自定义存储插件

我的数据是适当的格式,没有Apache支持的数据.有没有关于如何编写我自己的存储插件来处理这些数据的教程.

java apache-drill

4
推荐指数
1
解决办法
2087
查看次数

运行Apache Drill需要Java 1.7或更高版本

当我输入

$ 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

4
推荐指数
1
解决办法
1192
查看次数

3
推荐指数
1
解决办法
815
查看次数

如何在 Docker Compose 中启动 Apache Drill

此链接解释了如何在 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?

docker docker-compose apache-drill

3
推荐指数
1
解决办法
1723
查看次数

从 Python 连接到 Apache 钻

有谁知道如何从 python 建立到 Apache 钻的连接?

通常,通过 pyodbc 库的连接是这样的:

connection = pyodbc.connect(connectionString)
Run Code Online (Sandbox Code Playgroud)

连接字符串的格式通常为“DSN = *; UID = * ; PWD = ***”。我只是不确定如何在此处设置连接字符串。

谢谢!

python odbc pyodbc apache-drill

2
推荐指数
1
解决办法
3704
查看次数

Apache Drill 1.6.0 无法启动嵌入式 Drillbit (windows)

我无法在 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) …

windows apache-drill

2
推荐指数
1
解决办法
1768
查看次数

如何在分布式模式下本地启动钻头?

我下载了 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)

为什么钻头会抱怨绑定到回送地址?!

  1. 我没有为钻头配置 IP 绑定到!
  2. 并且由于我正在我的机器上启动钻头进程,我的机器会尝试绑定到哪些其他 IP?!

apache-drill

2
推荐指数
1
解决办法
1761
查看次数

Apache Drill支持存储过程和功能

我想知道Apache Drill是否支持存储过程和函数.如果是,请举一些例子.

apache-drill

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

Apache Drill - 通过 CTAS 创建自己的表

CTAS 命令是:CREATE TABLE new_table_name AS <query>;
但是,在创建表之前我必须创建架构。我无法做到这一点,而且我无法使用现有架构,因为对于每个已安装的架构,我都会收到 error:
schema cp is immutable。因此,解决方案是创建新模式。问题是我找不到这个命令的任何示例。

apache apache-drill

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

在 Apache Drill 中使用 TO_DATE 将 UNIXTIMESTAMP 转换为人类可读的时间格式

我的 JSON 文件是一个时间戳字段,它采用 UNIX 上传时间戳格式,如1501580484655. 这将转换为格林威治标准时间:01-08-2017 9:41:24.655AM

我尝试将此时间戳转换为人类可读的时间格式,直到毫秒不起作用。

到目前为止,我已经尝试过以下方法:

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) …

hdfs hadoop2 apache-drill

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

标签 统计

apache-drill ×12

amazon-s3 ×1

apache ×1

docker ×1

docker-compose ×1

hadoop2 ×1

hdfs ×1

java ×1

json ×1

odbc ×1

orc ×1

pyodbc ×1

python ×1

windows ×1