Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.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
ApacheSpark-将JavaRDD转换为csv文件_Java_Apache_Csv - Fatal编程技术网

ApacheSpark-将JavaRDD转换为csv文件

ApacheSpark-将JavaRDD转换为csv文件,java,apache,csv,Java,Apache,Csv,我正在尝试使用ApacheSpark将我的org.apache.spark.api.java.JavaRDD作为管道分隔文本写入.txt文件。为此,我使用spark提供的saveAsTextFile方法。但这个方法的问题是,它直接将对象写入到文件中,没有任何格式,而且我也无法给出正确的文件名 那么,哪种方法是将我的对象格式化/转换为管道分隔字符串并将其写入.txt文件的最佳方法,以及命名文件的正确方法 这是build.gradle dependencies { provided(

我正在尝试使用ApacheSpark将我的
org.apache.spark.api.java.JavaRDD
作为管道分隔文本写入
.txt
文件。为此,我使用spark提供的
saveAsTextFile
方法。但这个方法的问题是,它直接将对象写入到文件中,没有任何格式,而且我也无法给出正确的文件名

那么,哪种方法是将我的对象格式化/转换为管道分隔字符串并将其写入.txt文件的最佳方法,以及命名文件的正确方法

这是
build.gradle

dependencies {

provided(
        [group: 'org.apache.spark', name: 'spark-core_2.10', version: '1.4.0'],
        [group: 'org.apache.spark', name: 'spark-sql_2.10', version: '1.4.0'],
        [group: 'com.datastax.spark', name: 'spark-cassandra-connector-java_2.10', version: '1.4.0']
)

    compile([

            [group: 'com.databricks', name: 'spark-csv_2.10', version: '1.4.0'],
    ])


}

以下是完整的代码,您可以使用该代码格式化数据:

    String args[] = {"/Users/***/Documents/hContent/input/***/micro-/sample.txt",
                    "Users/**/Documents/hadoop/output"}; 


    SparkConf conf = new SparkConf();
    JavaSparkContext sc = new JavaSparkContext("local", "MaxTemperatureSpark", conf);
    JavaRDD<String> lines = sc.textFile(args[0]);


    JavaRDD<String[]> records = lines.map(new Function<String, String[]>(){

        public String[] call(String t){
            return t.split("\t");
        }
    });


    JavaRDD<String[]> filtered = records.filter(new Function<String[], Boolean>() {

        public Boolean call(String[] rec) throws Exception {
            // TODO Auto-generated method stub
            return rec[0] != "9999" && rec[1].matches("[01459]");
        }
    });

    JavaPairRDD<Integer, Integer> tuples = filtered.mapToPair(
            new PairFunction<String[], Integer, Integer>() {

                public Tuple2<Integer, Integer> call(String[] rec) throws Exception {
                    // TODO Auto-generated method stub
                    return new Tuple2<Integer, Integer>(
                            Integer.parseInt(rec[0]), Integer.parseInt(rec[1]));
                }

            }

    );

    JavaPairRDD<Integer, Integer> maxTemps = tuples.reduceByKey(
                new Function2<Integer, Integer, Integer>() {

                    public Integer call(Integer arg0, Integer arg1) throws Exception {
                        // TODO Auto-generated method stub
                        return Math.max(arg0, arg1);
                    }
                }
            );

    maxTemps.saveAsTextFile(args[1]);
String args[]={/Users/***/Documents/hContent/input/***/micro-/sample.txt”,
“Users/**/Documents/hadoop/output”};
SparkConf conf=新的SparkConf();
JavaSparkContext sc=新的JavaSparkContext(“本地”,“MaxTemperatureSpark”,conf);
javarddlines=sc.textFile(args[0]);
javarddrecords=lines.map(新函数(){
公共字符串[]调用(字符串t){
返回t.split(“\t”);
}
});
javarddfiltered=records.filter(新函数(){
公共布尔调用(字符串[]rec)引发异常{
//TODO自动生成的方法存根
返回rec[0]!=“9999”和&rec[1]。匹配项(“[01459]”);
}
});
JavaPairRDD tuples=filtered.mapToPair(
新PairFunction(){
公共元组2调用(字符串[]rec)引发异常{
//TODO自动生成的方法存根
返回新的Tuple2(
Integer.parseInt(rec[0]),Integer.parseInt(rec[1]);
}
}
);
javapairdd maxTemps=tuples.reduceByKey(
新功能2(){
公共整数调用(整数arg0、整数arg1)引发异常{
//TODO自动生成的方法存根
返回Math.max(arg0,arg1);
}
}
);
saveAsTextFile(args[1]);

请注意,输出文件夹指定将创建输出文件的位置,文件名以“part-00000”开头。因此,您可以解析输出文件夹并搜索文件。

无论如何,您可以在那里更改文件名??