gpt4 book ai didi

scala - 星火 SQL : access file in current worker node directory

转载 作者:可可西里 更新时间:2023-11-01 15:26:10 26 4
gpt4 key购买 nike

我需要使用 spark-sql 读取一个文件,该文件在当前目录中。

我使用此命令解压缩存储在 HDFS 上的文件列表。

val decompressCommand = Seq(laszippath, "-i", inputFileName , "-o", "out.las").!!

该文件在当前工作节点目录中输出,我知道这一点是因为通过 scala 执行 "ls -a"!! 我可以看到该文件在那里。然后我尝试使用以下命令访问它:

val dataFrame = sqlContext.read.las("out.las")

我假设 sql 上下文会尝试在当前目录中查找文件,但事实并非如此。此外,它不会抛出错误,而是会发出一条警告,指出找不到该文件(因此 spark 会继续运行)。

我尝试使用以下方法添加文件:sparkContext.addFile("out.las") 然后使用以下方法访问该位置:val location = SparkFiles.get("out.las") 但这也不起作用。

我什至运行了命令 val locationPt = "pwd"!! 然后执行了 val fullLocation = locationPt + "/out.las" 并尝试使用该值但它也没有用。

实际抛出的异常如下:

User class threw exception: org.apache.spark.sql.AnalysisException: cannot resolve 'x' given input columns: [];
org.apache.spark.sql.AnalysisException: cannot resolve 'x' given input columns: []

当我尝试从数据框中访问“x”列时,就会发生这种情况。我知道“X”列存在,因为我已经从 HDFS 下载了一些文件,在本地解压缩它们并运行了一些测试。

我需要一个一个解压文件,因为我有 1.6TB 的数据,所以我不能一次解压它然后再访问它们。

谁能告诉我如何访问正在输出到工作节点目录的文件?或者也许我应该以其他方式做这件事?

最佳答案

所以我现在设法做到了。我正在做的是将文件保存到 HDFS,然后通过 hdfs 使用 sql 上下文检索文件。我每次都在 HDFS 中覆盖“out.las”,这样我就不会占用太多空间。

关于scala - 星火 SQL : access file in current worker node directory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47042435/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com