您可以通过 jdbc 从 spark 数据库中获取模式吗?
Can you fetch schemas from spark databases via jdbc?
我正在尝试从数据块中的实例 A 连接到另一个数据块实例 B 以读取其表和模式(数据库)
如何使用 jdbc 从实例 B 获取架构?
这是我试过的:
sparkUrl = f"jdbc:{UrlPrefix}://{Host}:{Port}/default;transportMode=http;ssl=1;httpPath={Db};AuthMech=3;UID={Uid};PWD={Pwd};UseNativeQuery=1"
spark.read.jdbc( url=sparkUrl, table=f'(SHOW SCHEMAS)')
但是系统总是return报错:
java.sql.SQLException: [Simba][SparkJDBCDriver](500051) ERROR processing query/statement. Error Code: 0, SQL state: org.apache.hive.service.cli.HiveSQLException: Error running query: org.apache.spark.sql.AnalysisException: Table or view not found: SHOW; line 1 pos 15
如果我 运行 来自实例 A 的“正常” SELECT 语句针对实例 B 表,它 return 记录没有错误。
我在文档中读到 jdbc 驱动程序总是试图围绕 sql 语句,如
select * from (query)
这似乎是正在发生的行为,因此这就是我得到错误的原因。
我可以停止 jdbc 驱动程序的默认行为来包装 jdbc 查询,以便我可以 运行 实例 B 中的直接代码吗?
如果有这样的选项,我可以切换到 scala。
我遇到了同样的问题,show
关键字无法识别,所以使用其他方法来获得相同的关键字。我正在使用数据块提供的 databricks-sql-connector
来查询另一个实例。我提供一个详细的 link 供参考 - https://docs.databricks.com/dev-tools/python-sql-connector.html
- 您需要在实例上安装连接器
- 生成access_token访问集群
- 您可以在集群 jdbc/odbc 选项卡上获取所有主机名和路径详细信息。
from databricks import sql
with sql.connect(server_hostname="databricks.com",
http_path="sql/protocolv1/o/0/2",
access_token="asdjaskdjaskXXXX") as connection:
with connection.cursor() as cursor:
cursor.execute("SHOW SCHEMAS ")
result = cursor.fetchall()
for row in result:
print(row)
我正在尝试从数据块中的实例 A 连接到另一个数据块实例 B 以读取其表和模式(数据库)
如何使用 jdbc 从实例 B 获取架构?
这是我试过的:
sparkUrl = f"jdbc:{UrlPrefix}://{Host}:{Port}/default;transportMode=http;ssl=1;httpPath={Db};AuthMech=3;UID={Uid};PWD={Pwd};UseNativeQuery=1"
spark.read.jdbc( url=sparkUrl, table=f'(SHOW SCHEMAS)')
但是系统总是return报错:
java.sql.SQLException: [Simba][SparkJDBCDriver](500051) ERROR processing query/statement. Error Code: 0, SQL state: org.apache.hive.service.cli.HiveSQLException: Error running query: org.apache.spark.sql.AnalysisException: Table or view not found: SHOW; line 1 pos 15
如果我 运行 来自实例 A 的“正常” SELECT 语句针对实例 B 表,它 return 记录没有错误。
我在文档中读到 jdbc 驱动程序总是试图围绕 sql 语句,如
select * from (query)
这似乎是正在发生的行为,因此这就是我得到错误的原因。
我可以停止 jdbc 驱动程序的默认行为来包装 jdbc 查询,以便我可以 运行 实例 B 中的直接代码吗?
如果有这样的选项,我可以切换到 scala。
我遇到了同样的问题,show
关键字无法识别,所以使用其他方法来获得相同的关键字。我正在使用数据块提供的 databricks-sql-connector
来查询另一个实例。我提供一个详细的 link 供参考 - https://docs.databricks.com/dev-tools/python-sql-connector.html
- 您需要在实例上安装连接器
- 生成access_token访问集群
- 您可以在集群 jdbc/odbc 选项卡上获取所有主机名和路径详细信息。
from databricks import sql
with sql.connect(server_hostname="databricks.com",
http_path="sql/protocolv1/o/0/2",
access_token="asdjaskdjaskXXXX") as connection:
with connection.cursor() as cursor:
cursor.execute("SHOW SCHEMAS ")
result = cursor.fetchall()
for row in result:
print(row)