我有一個固定長度的文件(一個示例如下所示),我想讀這個文件使用DataFrames API使用SCALA在火花(不是python或java)。使用DataFrames API有辦法讀文本文件,json文件等等,但不知道如果有一種方法可以讀一個固定長度的文件。我在因特網上搜索,發現一個github鏈接,但是我下載了
spark-fixedwidth-assembly-1.0.jar
為此,然而我無法找出jar。我完全失去了在這裏,需要你的建議和幫助。
這是文件
56個蘋果真的0.56 45梨FALSE1.34 34覆盆子真的2.43 34梅真的1.31 53櫻桃真的1.4 23橙色FALSE2.34 56個柿子FALSE23.2
每一列固定寬度3,5,4
請提出你的意見。
找到以下解決方案,可以使用。
讓我們考慮這是文件中的數據。
EMP ID名字的姓
1克裏斯·M
2約翰R
3 amit C
EMP ID:從1到10個字符
名字:從11到25個字符開始
姓名:從36 - 25個字符開始
羅伯特:從61年到30個字符開始。
步驟1:
文件加載到一個dataframe下麵的選項,這將創建一個數據幀隻有一列和所有行:
DFSchema = " single_col字符串"
Df = (spark.read
.option(“標題”,假)
. schema (DFSchema)
. csv (file_path)
)
步驟2:
現在的單一列必須分為3列。遵循以下步驟
選項1:手動創建列的列
Df = (Df。withColumn (“EMP_ID Df.single_col.substr (10))
Df.single_col .withColumn(“名字”。25)substr(11日)
.withColumn(“姓”,Df.single_col.substr(36歲,25)
)
選項2:創建列pro-grammatically
定義列長度的細節:
Col_Details = [(EMP_ID,(10)、(“名字”,(11,25)),(“姓”,(36歲,25)))
使用循環單獨列編程:
為col_info:
df = df.withColumn (col_info [0], DataFrameReader.value.substr (col_info [1] [0], col_info [1] [1]))