我正在尝试使用auto insert(unique_ptr<Node> old_tree, int new_value) {
return make_unique<Node>(new_value, std::move(old_tree), nullptr);
}
库从python连接到Apache Drill。
我已经通过jaydebeapi
以嵌入式模式打开了钻取,并且Web ui在端口8047上正确运行。然后,我试图通过python脚本通过JDBC连接:
drill-embedded
但是我得到这个错误
import jaydebeapi
import jpype
import os
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:8047'
)
有人知道如何解决该问题吗?
答案 0 :(得分:0)
感谢@Luke Woodward的建议,问题出在港口。对于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()