碰巧我正在使用Azure Databricks处理一些数据。此类数据位于Azure Data Lake Storage Gen1中。我将数据安装到DBFS中,但是现在,在转换数据之后,我想将其写回到数据湖中。
要装入数据,我使用了以下内容:
configs = {"dfs.adls.oauth2.access.token.provider.type": "ClientCredential",
"dfs.adls.oauth2.client.id": "<your-service-client-id>",
"dfs.adls.oauth2.credential": "<your-service-credentials>",
"dfs.adls.oauth2.refresh.url": "https://login.microsoftonline.com/<your-directory-id>/oauth2/token"}
dbutils.fs.mount(source = "adl://<your-data-lake-store-account-name>.azuredatalakestore.net/<your-directory-name>", mount_point = "/mnt/<mount-name>",extra_configs = configs)
我想写一个.csv文件。对于此任务,我使用以下行
dfGPS.write.mode("overwrite").format("com.databricks.spark.csv").option("header", "true").csv("adl://<your-data-lake-store-account-name>.azuredatalakestore.net/<your-directory-name>")
但是,出现以下错误:
IllegalArgumentException: u'No value for dfs.adls.oauth2.access.token.provider found in conf file.'
有什么可以帮助我的代码吗?或引导我浏览的链接。
谢谢。
答案 0 :(得分:1)
如果安装Azure Data Lake Store,则应使用安装点存储数据,而不是“ adl:// ...”。有关如何挂载Azure Data Lake Store的详细信息 (ADLS)第1代,请参见Azure Databricks documentation。您可以验证安装点是否适用于:
dbutils.fs.ls("/mnt/<newmountpoint>")
因此,请在安装ADLS Gen 1之后尝试
dfGPS.write.mode("overwrite").format("com.databricks.spark.csv").option("header", "true").csv("mnt/<mount-name>/<your-directory-name>")
如果您正确添加了安装点,并且您还具有ADLS上的服务主体的访问权限,这应该可以工作。
Spark总是在一个目录中写入多个文件,因为每个分区都是单独保存的。另请参见以下stackoverflow question。