取消
顯示的結果
而不是尋找
你的意思是:

如何讀取文件”與“pyspark) |(分隔符

lambarc
新的貢獻者二世

數據是這樣的:

pageId】|【頁麵】|【位置】|【sysId】|【carId 0005] |(寶馬)|(南)| (AD6) | (OP4

有至少50列和數百萬行。

我嚐試使用以下代碼來讀取:

dff = sqlContext.read.format (“com.databricks.spark.csv”)。選項(“頭”,“真正的”)。選項(“inferSchema”,“真正的”)。選項(“分隔符”、“)| (”).load (trainingdata +“- 00000一部分”)

它給了我以下錯誤:

IllegalArgumentException: u 'Delimiter不能超過一個字符:]| ['

7回複7

SamKlingner
新的貢獻者三世

再次抱歉如果這個通知每個人——在這裏的文本編輯器!

我不確定的解決方案直接分裂與不止一個字符。我可以看到兩種方式在這:

第一個方法是使用“|”,然後將取代尖括號:

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 ()

但這仍與鑄造問題希望可以幫助你!

SamKlingner
新的貢獻者三世

代碼塊按鈕就沒有打好,抱歉。

謝爾
重視貢獻二世

val df = spark.read.format (csv)

.option(“標題”,真的)

.option (“9”、“| |”)

.load(“文件加載”)

顯示器(df)

試試這個

Meghala
重視貢獻二世

可能會有用

歡迎來到磚社區:讓學習、網絡和一起慶祝

加入我們的快速增長的數據專業人員和專家的80 k +社區成員,準備發現,幫助和合作而做出有意義的聯係。

點擊在這裏注冊今天,加入!

參與令人興奮的技術討論,加入一個組與你的同事和滿足我們的成員。

Baidu
map