Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaApacheSpark将TSV格式转换为JavaRDD_Java_Apache Spark - Fatal编程技术网

JavaApacheSpark将TSV格式转换为JavaRDD

JavaApacheSpark将TSV格式转换为JavaRDD,java,apache-spark,Java,Apache Spark,我需要实现一个JavaSpark程序来计算给定索引处具有相同列值的元组。其中,命令行参数是[输入路径][列索引][输出路径]。 输入是一个TSV文件,格式为:注册(入学号、姓、名、讲座、学期) 1234图形波利大数据智慧15 5678康达安娜大数据智慧16 9012 Jeego Hugh大数据智慧16 1234图形Polly数据挖掘WiSe16 3456 Downe Sid Data Mining WiSe16 Tsv是一个以制表符作为分隔符的csv文件,因此最简单的方法是使用Datafram

我需要实现一个JavaSpark程序来计算给定索引处具有相同列值的元组。其中,命令行参数是[输入路径][列索引][输出路径]。 输入是一个TSV文件,格式为:注册(入学号、姓、名、讲座、学期)

1234图形波利大数据智慧15
5678康达安娜大数据智慧16
9012 Jeego Hugh大数据智慧16
1234图形Polly数据挖掘WiSe16

3456 Downe Sid Data Mining WiSe16 Tsv是一个以制表符作为分隔符的csv文件,因此最简单的方法是使用Dataframe API读取该文件。如果需要,可以稍后将数据帧转换为rdd

首先,进行Spark课程:

SparkSession spark=SparkSession.builder()
.master(“本地[*]”)
.appName(“SparkTest”)
.getOrCreate();
现在可以读取该文件:

Dataset df=spark。
read()。
选项(“分隔符”、“\t”)。
选项(“标题”,false)。
csv();
由于csv阅读器负责格式化业务,因此不再需要手动拆分行

在下一步中,将提取列名。当读卡器选项
标题设置为
false
时,列名将是通用名称,如
\u c0
\u c1
。。。在本例中,我们按第四列(基于0索引)分组,因此选择此列名

int索引=3;
String columnname=df.schema().fieldNames()[index];
作为最后一步,我们根据所选列对数据帧进行分组,并计算每组的行数:

df.groupBy(columnname)
.count()
.show();
输出为:

+-----------+-----+
|_c3 |计数|
+-----------+-----+
|数据挖掘| 2|
|大数据| 3|
+-----------+-----+
如果需要,还可以将结果转换为rdd:

JavaRDD rdd=df.groupBy(columnname)
.count()
.toJavaRDD();
但通常情况下,DataFrameAPI与RDDAPI相比要多得多