精心设计的场景-> HDFS目录,该目录“喂”了多种类型的银行帐户 Activity 的新日志数据。
每行代表一个随机 Activity 类型,每行(字符串)包含文本“ActivityType = <TheTypeHere>”。

在Spark-Scala中,最好的方法是读取HDFS目录中的输入文件并输出多个HDFS文件,其中每个ActivityType均写入其自己的新文件中?

最佳答案

根据陈述改编了第一个答案:



问题是真的。开始:

// SO Question
val rdd = sc.textFile("/FileStore/tables/activitySO.txt")
val rdd2 = rdd.map(x => (x.slice (x.indexOfSlice("ActivityType=<")+14, x.indexOfSlice(">", (x.indexOfSlice("ActivityType=<")+14))), x))
val df = rdd2.toDF("K", "V")
df.write.partitionBy("K").text("SO_QUESTION2")

输入为:
ActivityType=<ACT_001>,34,56,67,89,90
3,4,4,ActivityType=<ACT_002>,A,1,2
ABC,ActivityType=<ACT_0033>
DEF,ActivityType=<ACT_0033>

输出为3个文件,其中密钥为不是ActivityType =,而是ACT_001,依此类推。关键数据没有被剥离,它仍然存在于字符串中。您可以根据需要以及输出位置和格式进行修改。

关于scala - 如何使用Spark读取不断更新的HDFS目录并基于String(行)将输出拆分为多个HDFS文件?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52925758/

10-12 00:28