我在AWS s3中有一個分隔的.txt文件。 datan用þ
839729þ25þ[email protected]þfirstnameþlastnameþ0þBLACKþ28/08/2017þ12329038þ99þ287þ81þ0
如何在pyspark中導入'þ'分隔的.txt文件
我試着用databricks and sparkcontext
來導入數據。雖然databricks方法運行並沒有拋出錯誤,但數據框中沒有數據。火花背景只是把錯誤說 - Cannot run multiple SparkContexts at once.
下面是2個appraoches,我試圖代碼:
from pyspark import SparkContext, SparkConf
from pyspark.sql import SparkSession
from pyspark.sql.functions import *
path = "s3:/XXX.txt"
df = sqlContext.read.format("com.databricks.spark.csv").option("header","true").option("sep","þ").load(path).distinct().cache()
第二個方法
from pyspark import SparkConf, SparkContext
from pyspark.sql import SQLContext
conf = SparkConf().setMaster("local").setAppName("test")
sc = SparkContext(conf = conf)
path = "s3://XXX.txt"
input = sc.textFile(path).map(lambda x: x.split('þ'))
對於第一種方法,而沒有數據,它正在讀取原始數據中的第一行作爲標題,因爲對於df.show(10, False)
,我得到以下輸出:
|��839729�%25�%[email protected]�%Zulekha�%Ali�%0�%Blue�%28/08/2017�%329559038�%12�%128932287�%3081�%0|
我完全是新的Spark和擴展PySpark,所以請在我身上輕鬆:)謝謝。
你嘗試使用十六進制代碼這個角色?並且你不能使用2個上下文...使用getOrCreate函數來修復該問題 –
另外,你是否只看到數據中的編碼問題?你確定這是實際的分隔符?如果一切都失敗了,找出分隔符的原始字節實際上是什麼 –
該數據也存在於SQL服務器中,並且用於分割數據的分隔符是相同的。我如何使用您提到的十六進制代碼。我是新的python和火花?謝謝。 – Yuvaraj