我是Spark的新手。我正在尝试使用本地模式(windows)中的spark java将csv文件保存为镶木地板。我收到了这个错误。
引起:org.apache.spark.SparkException:写入行时任务失败
我引用了其他线程并禁用了火花猜测
set(“spark.speculation”,“false”)
我仍然得到错误。我在csv中只使用两列用于测试目的仍然在这个问题上着陆。
输入:
portfolio_id;portfolio_code
1000042;CHNTESTPF04
1000042;CHNTESTPF04
1000042;CHNTESTPF04
1000042;CHNTESTPF04
1000042;CHNTESTPF04
1000042;CHNTESTPF04
1000042;CHNTESTPF04
我的代码:
JavaPairRDD<Integer, String> rowJavaRDD = pairRDD.mapToPair(new PairFunction<String, Integer, String>() {
private Double[] splitStringtoDoubles(String s){
String[] splitVals = s.split(";");
Double[] vals = new Double[splitVals.length];
for(int i= 0; i < splitVals.length; i++){
vals[i] = Double.parseDouble(splitVals[i]);
}
return vals;
}
@Override
public Tuple2<Integer, String> call(String arg0) throws Exception {
// TODO Auto-generated method stub
return null;
}
});
SQLContext SQLContext;
SQLContext = new org.apache.spark.sql.SQLContext(sc);
Dataset<Row> fundDF = SQLContext.createDataFrame(rowJavaRDD.values(), funds.class);
fundDF.printSchema();
fundDF.write().parquet("C:/test");
请帮助我在这里失踪。
答案 0 :(得分:1)
在这里回答,所以它从@Glennie Helles Sindholt所说的无人问津的部分开始。对不起发布此
的延迟我通过在Tuple2()中添加函数拆分来解决错误:
public void run(String t, String u)
{
public Tuple2<String,String> call(String rec){
String[] tokens = rec.split(";");
String[] vals = new String[tokens.length];
for(int i= 0; i < tokens.length; i++)
{
vals[i] =tokens[i];
}
return new Tuple2<String, String>(tokens[0], tokens[1]);
}
});
答案 1 :(得分:0)
请查找我的Java / Spark代码 1)加载CSV indo Spark Dataset 2)将数据集保存到实木复合地板
import org.apache.spark.sql.Dataset;
import org.apache.spark.sql.SparkSession;
SparkSession spark = SparkSession
.builder()
.appName("csv2parquet")
.config("spark.sql.warehouse.dir", "/file:/tmp")
.master("local")
.getOrCreate();
final String dir = "test.csv";
Dataset<Row> ds = spark.read().option("header", true).option("inferSchema", true).csv(dir);
final String parquetFile = "test.parquet";
final String codec = "parquet";
ds.write().format(codec).save(parquetFile);
spark.stop();
将此添加到您的pom
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-mapreduce-client-core</artifactId>
<version>2.8.1</version>
</dependency>