數據是這樣的:
pageId】|【頁麵】|【位置】|【sysId】|【carId 0005] |(寶馬)|(南)| (AD6) | (OP4
有至少50列和數百萬行。
我嚐試使用以下代碼來讀取:
dff = sqlContext.read.format (“com.databricks.spark.csv”)。選項(“頭”,“真正的”)。選項(“inferSchema”,“真正的”)。選項(“分隔符”、“)| (”).load (trainingdata +“- 00000一部分”)
它給了我以下錯誤:
IllegalArgumentException: u 'Delimiter不能超過一個字符:]| ['
再次抱歉如果這個通知每個人——在這裏的文本編輯器!
我不確定的解決方案直接分裂與不止一個字符。我可以看到兩種方式在這:
第一個方法是使用“|”,然後將取代尖括號:
dff = sqlContext.read.format (“com.databricks.spark.csv”)。選項(“頭”,“真正的”)。選項(“inferSchema”,“真正的”)。選項(“分隔符”,“|”).load (trainingdata +“- 00000一部分”)從pyspark.sql。功能的進口regexp_replace dff = dff。withColumn(的pageId ', regexp_replace ([pageId], [[]],”) ....其他列....
考慮到你可能想有50列循環:
dffs_headers = dff。在dffs_headers dtypes我:newColumnLabel =我[0].replace (' (',”) .replace (dff = dff '] ',”)。的withColumn (newColumnLabel regexp_replace(我[0],[[]],”).drop(我[0])
你仍然需要建立一個函數或情況下添加到這個循環正確地把每一列。第二種方法是通過抽樣:dff = sc.textfile (trainingdata +“部分- 00000”)。地圖(λx: x.replace (' (',”) .replace .split (‘)’,”) (“|”)) .toDF ()
但這仍與鑄造問題希望可以幫助你!
代碼塊按鈕就沒有打好,抱歉。