详细的场景->hdfs目录,其中“fed”了多种类型的银行账户活动的新日志数据。每行表示一个随机活动类型,每行(字符串)包含文本“activitytype”= <TheTypeHere>
".
在spark scala中,读取hdfs目录中的输入文件并输出多个hdfs文件(其中每个activitytype都写入自己的新文件)的最佳方法是什么?
详细的场景->hdfs目录,其中“fed”了多种类型的银行账户活动的新日志数据。每行表示一个随机活动类型,每行(字符串)包含文本“activitytype”= <TheTypeHere>
".
在spark scala中,读取hdfs目录中的输入文件并输出多个hdfs文件(其中每个activitytype都写入自己的新文件)的最佳方法是什么?
3条答案
按热度按时间nbnkbykc1#
您可以使用RDD执行类似操作,我假设您有可变长度的文件,然后转换为dfs:
输入为:
然后我得到3个输出文件,在本例中每个记录1个。在databricks中也很难表现出来。
您可以调整您的输出格式和位置等。分区是这里的关键。
ybzsozfc2#
您可以对此使用multipleoutputformat。请将rdd转换为键值对,以便activitytype是键。spark将为不同的键创建不同的文件。您可以根据键决定文件的放置位置及其名称。
vaqhlq813#
修改了对声明的第一个答复:
“key”字符串在父字符串中的位置是随机的,唯一可以保证的是它包含子字符串,在本例中是“activitytype”,后跟一些val。
问题真的是关于这个。下面是:
输入为:
输出是3个文件,其中键不是activitytype=,而是act\u 001等。键数据没有被剥离,它仍然在字符串中。如果需要,还可以修改输出位置和格式。