Pyspark डेटाफ़्रेम में सीएसवी फ़ाइल सामग्री आयात करें


13

मैं pyspark डेटाफ़्रेम में .csv फ़ाइल कैसे आयात कर सकता हूं? मैंने पंडों में सीएसवी फ़ाइल को पढ़ने की भी कोशिश की और फिर इसे createDataFrame का उपयोग करके एक स्पार्क डेटाफ़्रेम में बदल दिया, लेकिन यह अभी भी कुछ त्रुटि दिखा रहा है। क्या कोई इसके माध्यम से मेरा मार्गदर्शन कर सकता है? इसके अलावा, कृपया मुझे बताएं कि मैं xlsx फ़ाइल कैसे आयात कर सकता हूं? मैं पांडा डेटाफ़्रेम में सीएसवी सामग्री आयात करने की कोशिश कर रहा हूं और फिर इसे स्पार्क डेटा फ़्रेम में परिवर्तित कर सकता हूं, लेकिन यह त्रुटि दिखा रहा है:

"Py4JJavaError" An error occurred while calling o28.applySchemaToPythonRDD. : java.lang.RuntimeException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient 

मेरा कोड है:

from pyspark import SparkContext 
from pyspark.sql import SQLContext 
import pandas as pd 
sqlc=SQLContext(sc) 
df=pd.read_csv(r'D:\BestBuy\train.csv') 
sdf=sqlc.createDataFrame(df) 

1
यदि आपके पास कोई त्रुटि संदेश है, तो आपको इसे पोस्ट करना चाहिए; यह सबसे अधिक संभावना स्थिति को डीबग करने में मदद करने के लिए महत्वपूर्ण जानकारी है।
jagartner

मैं पांडा डेटाफ्रेम में सीएसवी सामग्री आयात करने की कोशिश कर रहा हूं और फिर इसे स्पार्क डेटा फ्रेम में परिवर्तित कर रहा हूं .... लेकिन यह "Py4JJavaError" जैसी त्रुटि दिखा रहा है। o28.applySchemaoPythonRDD को कॉल करते समय एक त्रुटि हुई। : java.lang.RuntimeException: java.lang.RuntimeException: Instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
Neha

और मेरा कोड था -> pyspark आयात से SparkContext से pyspark.sql आयात SQLContext आयात पांडा से pd sqlc = SQLContext (sc) df = pd .read_csv (r'D: \ BestBuy \ train.csv ') sdf = sqlc.creatata। (df) ----> त्रुटि
नेहा

1
DataScience.SE में आपका स्वागत है! कृपया टिप्पणी जोड़ने के बजाय अपने मूल पोस्ट को संपादित करें।
एमोरे

फ़ाइल पथ एचडीएफएस में होना चाहिए तब केवल यू ही डेटा चला सकता है
प्रकाश रेड्डी

जवाबों:


13

"मैं pyspark डेटाफ्रेम में .csv फ़ाइल कैसे आयात कर सकता हूं?" -- इसे करने के कई तरीके हैं; Databrick की स्पार्क-सीएसवी मॉड्यूल के साथ सबसे सरल शुरुआत करना होगा। आप इसे pyspark के साथ शुरू करके कर सकते हैं

pyspark --packages com.databricks:spark-csv_2.10:1.4.0

तो आप निम्न चरणों का पालन कर सकते हैं:

from pyspark.sql import SQLContext
sqlContext = SQLContext(sc)

df = sqlContext.read.format('com.databricks.spark.csv').options(header='true', inferschema='true').load('cars.csv')

अन्य विधि पाठ फ़ाइल में एक rdd का उपयोग कर के रूप में पढ़ने के लिए किया जाएगा

myrdd = sc.textFile("yourfile.csv").map(lambda line: line.split(","))

फिर अपने डेटा को रूपांतरित करें ताकि हर वस्तु स्कीमा (यानी Ints, स्ट्रिंग्स, फ़्लोट्स, आदि) के लिए सही प्रारूप में हो। आप तब उपयोग करना चाहते हैं

>>> from pyspark.sql import Row
>>> Person = Row('name', 'age')
>>> person = rdd.map(lambda r: Person(*r))
>>> df2 = sqlContext.createDataFrame(person)
>>> df2.collect()
[Row(name=u'Alice', age=1)]
>>> from pyspark.sql.types import *
>>> schema = StructType([
...    StructField("name", StringType(), True),
...    StructField("age", IntegerType(), True)])
>>> df3 = sqlContext.createDataFrame(rdd, schema)
>>> df3.collect()
[Row(name=u'Alice', age=1)]

संदर्भ: http://spark.apache.org/docs/1.6.1/api/python/pyspark.sql.html#pyspark.sql.Row

"इसके अलावा, कृपया मुझे बताएं कि मैं xlsx फ़ाइल कैसे आयात कर सकता हूं?" - एक्सेल फाइलें "बिग डेटा" में उपयोग नहीं की जाती हैं; स्पार्क का उपयोग बड़ी फ़ाइलों या डेटाबेस के साथ किया जाना है। यदि आपके पास एक एक्सेल फाइल है जो आकार में 50GB है, तो आप गलत कर रहे हैं। Excel उस आकार की फ़ाइल खोलने में भी सक्षम नहीं होगा; मेरे अनुभव से, 20 एमबी और एक्सेल के ऊपर कुछ भी मर जाता है।


मुझे लगता है कि ऊपर RDD दृष्टिकोण के साथ एक मुद्दा हो सकता है: फ़ील्ड में नई-नई पंक्तियाँ हो सकती हैं (यद्यपि दोहरे उद्धरण-चिह्नों से घिरे, viz।, Tools.ietf.org/html/rfc4180#section-2
flow2k

आप xlsx फ़ाइल को सीएसवी (gnumeric या ओपन ऑफिस एपिस जैसी चीजें) में बदलने के लिए उपकरणों का उपयोग कर सकते हैं। फिर आप डेटा विज्ञान को सामान्य रूप से कर सकते हैं
vpathak

2

मेरे लिए अच्छा काम किया:

from pyspark.sql.types import *
schema = StructType([StructField("name", StringType(), True),StructField("age", StringType(), True)]
pd_df = pd.read_csv("<inputcsvfile>")
sp_df = spark.createDataFrame(pd_df, schema=schema)

1

मेरी स्थानीय निर्देशिका में एक फ़ाइल 'temp.csv' है। वहाँ से, मैं निम्नलिखित एक स्थानीय उदाहरण का उपयोग कर रहा हूँ:

>>> from pyspark import SQLContext
>>> from pyspark.sql import Row
>>> sql_c = SQLContext(sc)
>>> d0 = sc.textFile('./temp.csv')
>>> d0.collect()
[u'a,1,.2390', u'b,2,.4390', u'c,3,.2323']
>>> d1 = d0.map(lambda x: x.split(',')).map(lambda x: Row(label = x[0], number = int(x[1]), value = float(x[2])))
>>> d1.take(1)
[Row(label=u'a', number=1, value=0.239)]
>>> df = sql_c.createDataFrame(d1)
>>> df_cut = df[df.number>1]
>>> df_cut.select('label', 'value').collect()
[Row(label=u'b', value=0.439), Row(label=u'c', value=0.2323)]

तो d0 कच्ची पाठ फ़ाइल है जिसे हम एक स्पार्क RDD को भेजते हैं। आपके लिए डेटा फ़्रेम बनाने के लिए, आप csv को तोड़ना चाहते हैं, और प्रत्येक प्रविष्टि को रो प्रकार बनाने के लिए, जैसा कि मैं d1 बनाते समय करता हूं। अंतिम चरण RDD से डेटा फ्रेम बनाना है।


0

आप DataBricks द्वारा पैकेज स्पार्क-सीएसवी का उपयोग कर सकते हैं जो आपके लिए बहुत सारी चीजें स्वचालित रूप से करता है, जैसे हेडर का ख्याल रखना, एस्केप कैरेक्टर्स का उपयोग करना, ऑटोमैटिक स्कीमा इनफ्लाइटिंग वगैरह। स्पार्क 2.0 से शुरू सीएसवी से निपटने के लिए एक इनबिल्ट फंक्शन है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.