亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Python:JayDeBeApi 與 Apache Drill 的 JDBC 連接錯誤錯誤

Python:JayDeBeApi 與 Apache Drill 的 JDBC 連接錯誤錯誤

侃侃無極 2023-10-06 13:46:56
我正在嘗試使用庫從 python 連接到 Apache Drill jaydebeapi。我已經通過 開啟了嵌入模式下的鉆取drill-embedded,并且 Web ui 在端口 8047 中正確運行。然后,我嘗試通過 python 腳本通過 JDBC 進行連接:import jaydebeapiimport jpypeimport osDRILL_HOME = os.environ["DRILL_HOME"]classpath = DRILL_HOME + "/jars/jdbc-driver/drill-jdbc-all-1.17.0.jar"jpype.startJVM(jpype.getDefaultJVMPath(), "-Djava.class.path=%s" % classpath)conn = jaydebeapi.connect(    'org.apache.drill.jdbc.Driver',    'jdbc:drill:drillbit=localhost:8047')但我收到這個錯誤SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".SLF4J: Defaulting to no-operation (NOP) logger implementationSLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.Traceback (most recent call last):  File "jaydebe_drill.py", line 10, in <module>    'jdbc:drill:drillbit=localhost:8047'  File "/Users/user/opt/anaconda3/lib/python3.7/site-packages/jaydebeapi/__init__.py", line 412, in connect    jconn = _jdbc_connect(jclassname, url, driver_args, jars, libs)  File "/Users/user/opt/anaconda3/lib/python3.7/site-packages/jaydebeapi/__init__.py", line 230, in _jdbc_connect_jpype    return jpype.java.sql.DriverManager.getConnection(url, *dargs)jpype._jexception.SQLNonTransientConnectionExceptionPyRaisable: java.sql.SQLNonTransientConnectionException: Failure in connecting to Drill: oadd.org.apache.drill.exec.rpc.ChannelClosedException: Channel closed /127.0.0.1:62244 <--> localhost/127.0.0.1:8047.有誰知道如何解決這個問題?
查看完整描述

1 回答

?
滄海一幻覺

TA貢獻1824條經驗 獲得超5個贊

因為drill-embedded沒有端口可供選擇。下面是完整的查詢示例


import jaydebeapi

import jpype

import os

import pandas as pd


DRILL_HOME = os.environ["DRILL_HOME"]

classpath = DRILL_HOME + "/jars/jdbc-driver/drill-jdbc-all-1.17.0.jar"


jpype.startJVM(jpype.getDefaultJVMPath(), "-Djava.class.path=%s" % classpath)


conn = jaydebeapi.connect(

    'org.apache.drill.jdbc.Driver',

    'jdbc:drill:drillbit=localhost'

)


cursor = conn.cursor()


query = """

    SELECT *

    FROM dfs.`/Users/user/data.parquet`

    LIMIT 1

"""


cursor.execute(query)

columns = [c[0] for c in cursor.description]

data = cursor.fetchall()

df = pd.DataFrame(data, columns=columns)


df.head()


查看完整回答
反對 回復 2023-10-06
  • 1 回答
  • 0 關注
  • 127 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號