Databricks SQL 似乎不支持 SQL 服务器
Databricks SQL doesn't seem to support SQL Server
我在 Databricks 上的 python 笔记本中使用 JDBC 创建了一些配置单元表。这是关于数据科学与工程 UI。我能够查询 Databricks Notebook 中的表,并使用魔术命令 %
直接 SQL 用户
当切换到 Databricks SQL UI 时,我仍然能够在 Hive Metastore Explorer 中看到表。但是我无法读取数据。一条非常明确的消息说只支持 csv、parquet 等。
尽管如此,我发现这令人惊讶,因为我可以在 DS 和工程上使用数据 UI 为什么在 Databricks 上不能这样 SQL?有什么解决办法可以克服吗?
您可以使用外部 table 将 Hive table 从云存储导入 Databricks 并使用 Databricks SQL.
查询它
第 1 步:显示 CREATE TABLE 语句
在 Hive 命令行上发出 SHOW CREATE TABLE <tablename>
命令以查看创建 table.
的语句
参考下面的例子:
hive> SHOW CREATE TABLE wikicc;
OK
CREATE TABLE `wikicc`(
`country` string,
`count` int)
ROW FORMAT SERDE
'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'
STORED AS INPUTFORMAT
'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
'/user/hive/warehouse/wikicc'
TBLPROPERTIES (
'totalSize'='2335',
'numRows'='240',
'rawDataSize'='2095',
'COLUMN_STATS_ACCURATE'='true',
'numFiles'='1',
'transient_lastDdlTime'='1418173653')
步骤 2:发出 CREATE EXTERNAL TABLE 语句
如果返回的语句使用 CREATE TABLE 命令,复制该语句并将 CREATE TABLE 替换为 CREATE EXTERNAL TABLE.
EXTERNAL 确保 Spark SQL 不会在您删除 table.
时删除您的数据
您可以省略 TBLPROPERTIES 字段。
DROP TABLE wikicc
CREATE EXTERNAL TABLE `wikicc`(
`country` string,
`count` int)
ROW FORMAT SERDE
'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'
STORED AS INPUTFORMAT
'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
'/user/hive/warehouse/wikicc'
第 3 步:对您的数据发出 SQL 命令
SELECT * FROM wikicc
来源:https://docs.databricks.com/data/data-sources/hive-tables.html
是的,Databricks SQL 目前仅支持 file-based 格式,这是一个已知的限制。我记得它与安全模型有关,再加上 DBSQL 在幕后使用 Photon,而 JDBC 集成可能性能不佳。您可以联系您的解决方案架构师或客户成功工程师,以了解将来是否会支持它。
当前的解决方法只是让一个作业定期通过 JDBC 从数据库中读取所有数据并转储到 Delta table - 它可能比 [=15] 性能更高=],唯一的问题是数据的新鲜度。
我在 Databricks 上的 python 笔记本中使用 JDBC 创建了一些配置单元表。这是关于数据科学与工程 UI。我能够查询 Databricks Notebook 中的表,并使用魔术命令 %
直接 SQL 用户当切换到 Databricks SQL UI 时,我仍然能够在 Hive Metastore Explorer 中看到表。但是我无法读取数据。一条非常明确的消息说只支持 csv、parquet 等。
尽管如此,我发现这令人惊讶,因为我可以在 DS 和工程上使用数据 UI 为什么在 Databricks 上不能这样 SQL?有什么解决办法可以克服吗?
您可以使用外部 table 将 Hive table 从云存储导入 Databricks 并使用 Databricks SQL.
查询它第 1 步:显示 CREATE TABLE 语句
在 Hive 命令行上发出 SHOW CREATE TABLE <tablename>
命令以查看创建 table.
参考下面的例子:
hive> SHOW CREATE TABLE wikicc;
OK
CREATE TABLE `wikicc`(
`country` string,
`count` int)
ROW FORMAT SERDE
'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'
STORED AS INPUTFORMAT
'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
'/user/hive/warehouse/wikicc'
TBLPROPERTIES (
'totalSize'='2335',
'numRows'='240',
'rawDataSize'='2095',
'COLUMN_STATS_ACCURATE'='true',
'numFiles'='1',
'transient_lastDdlTime'='1418173653')
步骤 2:发出 CREATE EXTERNAL TABLE 语句
如果返回的语句使用 CREATE TABLE 命令,复制该语句并将 CREATE TABLE 替换为 CREATE EXTERNAL TABLE.
EXTERNAL 确保 Spark SQL 不会在您删除 table.
时删除您的数据您可以省略 TBLPROPERTIES 字段。
DROP TABLE wikicc
CREATE EXTERNAL TABLE `wikicc`(
`country` string,
`count` int)
ROW FORMAT SERDE
'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'
STORED AS INPUTFORMAT
'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
'/user/hive/warehouse/wikicc'
第 3 步:对您的数据发出 SQL 命令
SELECT * FROM wikicc
来源:https://docs.databricks.com/data/data-sources/hive-tables.html
是的,Databricks SQL 目前仅支持 file-based 格式,这是一个已知的限制。我记得它与安全模型有关,再加上 DBSQL 在幕后使用 Photon,而 JDBC 集成可能性能不佳。您可以联系您的解决方案架构师或客户成功工程师,以了解将来是否会支持它。
当前的解决方法只是让一个作业定期通过 JDBC 从数据库中读取所有数据并转储到 Delta table - 它可能比 [=15] 性能更高=],唯一的问题是数据的新鲜度。