首页 > 解决方案 > R 通过 RODBC 访问 Azure DataBricks 中的镶木地板文件

问题描述

我成功配置了与 Azure DataBricks 集群的连接,并且可以使用以下命令查询表

conn <- odbcConnect("AzureDatabricks")
sqlQuery(conn, "SELECT * FROM my_table")

但我需要访问镶木地板文件。在 Databricks 中,我可以使用以下代码:

%sql

Select * FROM parquet.`/path/to/folder`

如果我用 R 试试这个

sqlQuery(conn, "Select * FROM parquet.`/path/to/folder`")

我收到错误:

[Simba][SQLEngine] Table or view not found: SPARK.parquet./path/to/folder"
[RODBC] ERROR: Could not SQLExecDirect 'Select * FROM parquet.`/path/to/folder`

有没有办法通过 RODBC 访问镶木地板文件?

标签: razureapache-sparkdatabricksrodbc

解决方案


由于您的 sql 查询本身存在错误,您遇到了此问题。运行Select * FROM parquet./path/to/folder命令时,由于语法错误,您将看不到 table 或 view not found。

示例:用于理解问题的示例示例(当您运行 SELECT * FROM parquer.'somepath' 时),您将看到语法错误。

在此处输入图像描述

注意:从 parquet 文件创建 Dataframe 后,您必须将其注册为临时表才能在其上运行sql 查询

val sqlContext = new org.apache.spark.sql.SQLContext(sc)

val df = sqlContext.read.parquet("src/main/resources/peopleTwo.parquet")

df.printSchema

// after registering as a table you will be able to run sql queries
df.registerTempTable("people")

sqlContext.sql("select * from people").collect.foreach(println)

参考: Spark SQL 指南 - Parquet 文件


推荐阅读