通过rodbc访问azuredatabricks中的parquet文件

rslzwgfq  于 2021-05-27  发布在  Spark
关注(0)|答案(1)|浏览(424)

我成功地配置了到azuredatabricks集群的连接,并且可以使用

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

但我需要访问Parquet文件。在databricks中,我可以使用以下代码:

%sql

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

如果我试试这个

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访问Parquet文件?

pod7payv

pod7payv1#

由于sql查询本身出错,您遇到了此问题。当你跑的时候 Select * FROM parquet./path/to/folder ,由于语法错误,您将看不到表或视图。
示例:了解问题的示例(当您运行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)

reference:spark sql 指南-Parquet文件

相关问题