当前位置: 首页 > 知识库问答 >
问题:

火花:无法从HDFS加载拼花文件,直到将它们“放入”hdfs

许招
2023-03-14

我有一个c#应用程序,可以创建拼花地板文件并将其上载到远程HDFS。如果我使用scp将文件复制到安装了HDFS客户端的目标计算机上,然后将文件“HDFS放入”HDFS中,spark可以正确读取文件。

如果我使用curl针对webhdf服务从客户端应用程序直接将文件上传到HDFS,则在尝试读取拼花文件时会从Spark收到以下错误:

df=sqlContext。阅读parquet(“/tmp/test.parquet”)回溯(最后一次调用):文件“”,第1行,在文件“/usr/hdp/current/spark2 client/python/pyspark/sql/readwriter.py”中,第303行,在parquet return self中_df(self.\u jreader.parquet(\u to\u seq(self.\u spark.\u sc,path)))文件“/usr/hdp/current/spark2 client/python/lib/py4j-0.10.7-src.zip/py4j/java\u gateway.py”,第1257行,调用文件“/usr/hdp/current/spark2 client/python/pyspark/sql/utils.py”,第69行,在deco raise AnalysisException(s.split(':',)[1],stackTrace)Pysark中。sql。UTIL。AnalysisException:u'无法推断拼花地板的架构。必须手动指定。;'

如果我将两个文件(scp上载的一个文件和通过curl上载的文件)提取到本地文件系统,并在文件之间进行二进制差异,那么差异不会显示任何差异。如果我将该文件再次放入HDFS(使用curl和webhdfs上传的文件),那么Spark可以很好地读取拼花地板文件。

这有点像“hdfs put”创造了某种魔力,使spark能够很好地读取拼花地板文件。

会发生什么?谢谢

更新:如果我得到本地一个目录与几个parquet并把它再次进入HDFS,它不起作用,我必须把拼花文件一个接一个地让火花读取它们

共有2个答案

盖向荣
2023-03-14

我终于找出了错误的原因。上载文件的名称以“\u1”字符开头。这就是spark无法加载镶木地板文件的原因。

冯鸿光
2023-03-14

您是否检查了webhdfs服务是否将文件放在同一路径下(/tmp/test.parquet)?换句话说,你能用hdfs客户端(hdfs get)下载文件(通过webhdfs上传)吗?

最佳,fej

 类似资料:
  • 我如何一次加载5年的拼花数据并复制到一个表中?因为1个月的负荷比我1.5个小时,5年就要花我90个小时。如果有可能并行加载?我该怎么做呢? 谢谢

  • 我正在尝试优化我的火花应用工作。 我试图理解这个问题的要点:如何在唯一键上连接数据帧时避免混乱? > 我已经确保必须发生加入操作的键分布在同一分区中(使用我的自定义分区程序)。 我也不能做广播加入,因为我的数据可能会根据情况变大。 在上面提到的问题的答案中,重新分区只优化了连接,但我需要的是无需切换即可连接。在分区内的键的帮助下,我对连接操作很满意。 有可能吗?如果不存在类似的功能,我想实现像jo

  • 我是Spark的新手。我尝试在本地模式(windows)下使用spark java将csv文件保存为parquet。我得到了这个错误。 原因:org.apache.spark.Spark异常:写入行时任务失败 我引用了其他线程并禁用了spark推测 set("spark.speculation "," false ") 我还是会出错。我在csv中只使用了两个专栏进行测试。 输入: 我的代码: 请帮

  • 我正在尝试使用SparkStreaming将流数据存储到HDFS中,但它会继续在新文件中创建附加到一个文件或几个多个文件中 如果它一直创建n个文件,我觉得效率不会很高 代码 在我的pom中,我使用了各自的依赖项: 火花-core_2.11 火花-sql_2.11 火花-streaming_2.11 火花流-kafka-0-10_2.11

  • 我在一个Spark项目上工作,这里我有一个文件是在parquet格式,当我试图用java加载这个文件时,它给了我下面的错误。但是,当我用相同的路径在hive中加载相同的文件并编写查询select*from table_name时,它工作得很好,数据也很正常。关于这个问题,请帮助我。 java.io.ioException:无法读取页脚:java.lang.runtimeException:损坏的文

  • 使用Python 3.6在Amazon EMR集群(1个主节点,2个节点)上运行Spark 2.4.2 我正在Amazon s3中读取对象,将其压缩为拼花格式,并将其添加(附加)到现有的拼花数据存储中。当我在pyspark shell中运行代码时,我能够读取/压缩对象,并将新的拼花文件添加到现有的拼花文件中,当我对拼花数据运行查询时,它显示所有数据都在拼花文件夹中。但是,当我在EMR集群上的步骤中