मैं पांडा बैकग्राउंड से आता हूं और सीएसवी फाइलों के डेटा को डेटाफ्रेम में पढ़ने के लिए इस्तेमाल किया जाता है और फिर कॉलम के नाम को साधारण कमांड का उपयोग करके कुछ उपयोगी में बदल दिया जाता है:
df.columns = new_column_name_list
हालांकि, वही sqlContext का उपयोग करके बनाए गए pyspark डेटाफ़्रेम में काम नहीं करता है। एकमात्र उपाय जिसे मैं आसानी से करने के लिए समझ सकता हूं वह निम्नलिखित है:
df = sqlContext.read.format("com.databricks.spark.csv").options(header='false', inferschema='true', delimiter='\t').load("data.txt")
oldSchema = df.schema
for i,k in enumerate(oldSchema.fields):
k.name = new_column_name_list[i]
df = sqlContext.read.format("com.databricks.spark.csv").options(header='false', delimiter='\t').load("data.txt", schema=oldSchema)
यह मूल रूप से चर को दो बार परिभाषित कर रहा है और पहले स्कीमा का संदर्भ दे रहा है फिर कॉलम नामों का नाम बदल रहा है और फिर अद्यतन स्कीमा के साथ फिर से डेटाफ्रेम लोड कर रहा है।
क्या ऐसा करने का एक बेहतर और कारगर तरीका है जैसे हम पांडा में करते हैं?
मेरा स्पार्क संस्करण 1.5.0 है
for
लूप + के साथ कियाwithColumnRenamed
, लेकिन आपकाreduce
विकल्प बहुत अच्छा है :)