我是SPARK的新手,所以試圖做一個小程序並且遇到下面的錯誤。 有人可以幫忙嗎?SPARK的管道分隔文件中的數據幀
僅供參考 - 當樣本文件中的列中沒有空數據時,程序似乎工作,但問題似乎是由於第二行中的空值引起的。
數據:TEMP_EMP.dat
1232|JOHN|30|IT
1532|DAVE|50|
1542|JEN|25|QA
內容
SCALA代碼來解析該數據轉換成dataframes
import org.apache.spark.sql.Row;
import org.apache.spark.sql.types.{StructType, StructField, StringType};
val employee = sc.textFile("file:///TEMP_EMP.dat")
val textFileTemp = sc.textFile("file:///TEMP_EMP.dat");
val schemaString = "ID|NAME|AGE|DEPT";
val schema = StructType(schemaString.split('|').map(fieldName=>StructField(fieldName,StringType,true)));
val rowRDD = employee.map(_.split('|')).map(e => Row(e(0),e(1),e(2), e(3)));
val employeeDF = sqlContext.createDataFrame(rowRDD, schema);
employeeDF.registerTempTable("employee");
val allrecords = sqlContext.sql("SELECT * FROM employee");
allrecords.show();
錯誤日誌:
WARN 2016年8月17日13:36:21006 org.apache.spark.scheduler.TaskSetManager:失去任務0.0在階段6.0:java.lang.ArrayIndexOutOfBoundsException:3
這是如何解決範圍下標的初始問題的? – swdev