在spark scala中,如何将基于cuontry的所有行分类保存回具有相同格式的rdd?

在spark scala中,如何将基于cuontry的所有行分类保存回具有相同格式的rdd?,scala,apache-spark,Scala,Apache Spark,我有这样的数据 vxbjxvsj^country:US;age:23;name:sri jhddasjd^country:UK;age:24;name:abhi vxbjxvsj^country:US;age:23;name:shree jhddasjd^country:UK;age:;name:david 在spark scala中,我需要识别按国家分类并保存为rdd相同格式的国家 应该在一个rdd或文件名中 jhddasjd^country:UK;age:24;name:abhi jhdd

我有这样的数据

vxbjxvsj^country:US;age:23;name:sri
jhddasjd^country:UK;age:24;name:abhi
vxbjxvsj^country:US;age:23;name:shree
jhddasjd^country:UK;age:;name:david
在spark scala中,我需要识别按国家分类并保存为rdd相同格式的国家 应该在一个rdd或文件名中

jhddasjd^country:UK;age:24;name:abhi
jhddasjd^country:UK;age:;name:david
应在一个rdd或文件名UK中

vxbjxvsj^country:US;age:23;name:sri
vxbjxvsj^country:US;age:23;name:shree

如果您以
RDD
的形式读取文件,您将得到
RDD[String]
RDD of String,每行作为一个字符串

筛选
您需要
拆分
每一行,提取国家/地区字段并对其进行筛选

rdd.filter(r =>
      r.split(":")(1).split(";")(0).equalsIgnoreCase("US")
    ).saveAsTextFile(s"US"}")
这将获得国家/地区字段和过滤器,即
“US”

如果您希望这是动态的,那么您可以首先获取一个唯一国家的列表,并在循环中执行筛选,如下所示

val countries = df1.map(_.split(":")).map(_ (1).split(";")(0)).collect()

countries.foreach(country => {
  rdd.filter(r =>
    r.split(":")(1).split(";")(0).equalsIgnoreCase(country)
  ).saveAsTextFile(s"output/${country}")
})

希望这有帮助

你试过什么吗?您基本上需要在
国家:美国
国家:英国
上进行筛选,然后
保存ASTEXTFILE
;年龄:23岁;;名称:sri vxbjxvsj^国家:美国;年龄:23岁;;名称:Shreey您需要提供“第一方1”和“品牌代码”的详细信息。代码不完整,因此帮助不是那么简单。很好,很高兴这对您有所帮助