![](/img/trans.png)
[英]Azure Databricks: How do we access R Scripts present on DBFS?
[英]Access parquet files in Azure DataBricks by R via RODBC
我成功配置了与 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 访问镶木地板文件?
由于 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)
您需要添加UseNativeQuery=1;
odbc 连接字符串的参数。
Examlpe: Driver={Simba Spark ODBC Driver};Host=[serverHost];Port=443;HTTPPath=[httpPath];ThriftTransport=2;SSL=1;AuthMech=3;UID=token;PWD=[pwd];UseNativeQuery=1;
https://docs.databricks.com/integrations/jdbc-odbc-bi.html#ansi-sql-92-query-support-in-odbc
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.