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

将数据帧作为文本文件加载到HDFS和S3中[重复]

郗鹏
2023-03-14

我正在尝试使用下面的代码将数据帧作为文本格式文件加载到html" target="_blank">HDFS和S3中<代码>数据帧名称为最终数据。

val targetPath = "/user/test/File"
val now = Calendar.getInstance().getTime()
val formatter = new SimpleDateFormat("yyyyMMddHHmmss")
val timeStampAfterFormatting = formatter.format(now)
val targetFile = s"""$targetPath/test_$timeStampAfterFormatting.txt"""
finalData.repartition(1).rdd.saveAsTextFile(targetFile)

使用上述代码,我可以成功加载数据。但文件名和我提供的不一样,也不是文本格式。已创建一个目录,其名称如我所述。

目录名称- /user/test/File/test_20170918055206.txt

-bash-4.2$hdfs dfs-ls/user/test/File/test\u 20170918055206。txt文件

找到2个项目

/用户/测试/文件/测试\u 20170918055206。txt/\u成功

/用户/测试/文件/测试\u 20170918055206。txt/part-00000

我想创建我提到的文件,而不是创建目录。谁能帮我一下吗。

共有1个答案

钱卓君
2023-03-14

在我看来,这是作为设计工作。

您在保存rdd数据之前进行了重新分区操作,这将触发整个数据之间的随机操作,最终得到一个只有一个分区的新rdd。

因此,只有一个分区作为saveAsTextFile操作存储在HDFS中。

此方法设计为允许以统一方式写入任意数量的分区。

例如,如果您的rdd有100个分区,在写入HDFS之前没有合并或重新分区。然后您将获得一个包含_SUCCESS标志和100个文件的目录!

如果这种方法不是这样设计的,那么具有多个分区的rdd如何以简洁、统一、优雅的方式存储,也许用户需要引导多个文件名?...啊,也许太繁琐了

我希望这个解释能帮助你。

如果您需要在本地文件系统上创建一个完整的文件,只需尝试hadoophtml" target="_blank">客户端命令:

hadoop fs-getmerge[src][des]

 类似资料:
  • 我想在spark中读取一个CSV,将其转换为DataFrame,并使用将其存储在HDFS中 在Apache Spark中将CSV文件加载为DataFrame的正确命令是什么?

  • 我有如下数据帧: 如何使用字段分隔符将上述数据框另存为文本文件格式|保存我的输出文件后,应该是部分-00000,部分-00001 e.t.c

  • 我有多个csv文件保存在一个文件夹中,具有相同的列布局,并希望将其作为pandas中的数据帧加载到python中。 这个问题与这条线索非常相似。 我使用以下代码: 还有更好的解决方案吗? 这需要很多时间。 谢啦

  • 问题内容: 首先,我对Java非常基础。我正在尝试浏览.txt文件并将其内容加载到文本区域。我已经完成了该部分,直到从JFileChooser接收文件为止,现在我不知道如何做其余的工作。 问题答案: 使用所有Swing文本组件都支持的read(…)和write(…)方法。简单的例子:

  • 我有3个维度为(a*2、b*2、c*2)的数据帧,而a、b、c是不同的数字。我想把它们添加到一个csv文件中,但每次都写不出来。我使用了csv的熊猫数据帧输出端 但做不到。 我的代码- 但是,我得到的最终输出是最后一个数据帧,而不是所有其他数据帧。

  • 我试图解压缩一个csv文件并将其传递给熊猫,这样我就可以处理这个文件了。 到目前为止,我尝试的代码是: 在最后一行之后,尽管python能够获取该文件,但在错误的末尾我得到了一个“不存在”。 有人能告诉我我做错了什么吗?