sparklyr - sparklyr::spark_read_csv java.net.URISyntaxException 在 Windows
问题描述
我在 Windows 上运行 RStudio,并使用 databricks-connect 成功连接到 Azure Databricks。在 Databricks 上,我在 /mnt/clientdata 上安装了 Azure Datalake Gen2 文件系统。在 Python 中,在 Windows 机器上,我可以成功运行
df = spark.read.format("csv").option("header", "true").load("dbfs:/mnt/clientdata/rawdata/instrumentstatic/instrumentstatic-asisa/v2.6/coronation/2020/05/12/114543/InstrumentStaticData_JPM_20200511_20200512132625.csv.gz")
如果我运行相同的场景,使用相同的路径,但使用 sparklyr::spark_read_csv,我会得到一个
Error: java.lang.IllegalArgumentException: java.net.URISyntaxException: Relative path in absolute URI: C:%5Cmnt%5Cclientdata%5Crawdata%5Cinstrumentstatic%5Cinstrumentstatic-asisa%5Cv2.6%5Ccoronation%5C2020%5C05%5C12%5C114543%5CInstrumentStaticData_JPM_20200511_20200512132625.csv.gz
sparklyr::spark_read_csv调用spark_normalize_path,后者调用 R 基本函数normalizePath。此函数附加 C:\ 或 C:\currentdirpath,具体取决于我是否在路径中指定 dbfs:。如果我在sparklyr中删除对normalizePath的调用,我的代码就会完美运行。
在 Windows 上运行 sparklyr 时如何解决此问题?
解决方案
带有三个正斜杠的引用路径:dbfs:///mnt/clientdata/...
推荐阅读
- java - 调用包含在作为 hashmap 值的类中的方法 (Java)
- javascript - 在客户端 javascript 或 websocket 服务器上转义?
- r - 粘贴并重复该列指定的字符值次数,并在 r 中创建一个新列
- batch-file - 将通配符链接到批处理中的脚本
- scripting - 通过脚本运行 Illustrator 扩展
- swift - 回调函数或发布通知
- c++ - 从数据文件中读取一组整数并打印未呈现预期结果的总和
- macos - SSH computer_name.local 问题
- php - 我可以在 .blade.php 文件中显示数组索引吗?
- nginx - 根据标头的内容使用入口路由流量