সিএসভি ফাইলের বিষয়বস্তুগুলিকে পাইপার্ক ডেটা ফ্রেমে আমদানি করুন


13

কীভাবে আমি পিএসপার্ক ডেটাফ্রেমে একটি .csv ফাইল আমদানি করতে পারি? এমনকি আমি পান্ডাসে সিএসভি ফাইলটি পড়ার চেষ্টা করেছি এবং তারপরে এটি তৈরির ডেটা ফ্রেম ব্যবহার করে একটি স্পার্ক ডেটা ফ্রেমে রূপান্তরিত করেছি, তবে এটি এখনও কিছু ত্রুটি দেখাচ্ছে showing এর মাধ্যমে কেউ আমাকে গাইড করতে পারে? এছাড়াও, দয়া করে আমাকে বলুন আমি কীভাবে একটি এক্সএলএসএক্স ফাইল আমদানি করতে পারি? আমি সিএসভি কনটেন্টকে পান্ডাস ডেটাফ্রেমে আমদানি করার চেষ্টা করছি এবং তারপরে এটিকে স্পার্ক ডেটা ফ্রেমে রূপান্তরিত করব, তবে এটি ত্রুটিটি দেখাচ্ছে:

"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
আপনার যদি একটি ত্রুটি বার্তা থাকে তবে আপনার এটি পোস্ট করা উচিত; সম্ভবত পরিস্থিতি ডিবাগ করতে সহায়তা করার ক্ষেত্রে এটিতে গুরুত্বপূর্ণ তথ্য রয়েছে।
জাগার্টনার

আমি সিএসভি বিষয়বস্তুগুলিকে প্যান্ডাস ডেটাফ্রেমে আমদানি করার চেষ্টা করছি এবং তারপরে এটিকে স্পার্ক ডেটা ফ্রেমে রূপান্তরিত করব .... তবে এটি "পাই 4 জাজাআররারের মতো" কিছু ত্রুটি দেখাচ্ছে যা o28.applySchemaToPythonRDD কল করার সময় একটি ত্রুটি ঘটেছে। : Java.lang.RuntimeException: java.lang.RuntimeException: থেকে instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient অক্ষম
নেহা

এবং আমার কোডটি ছিল -> pyspark আমদানি থেকে স্পার্ককন্টেক্সট থেকে pyspark.sql আমদানি করুন এসকিউএল কনটেক্সট আমদানি পান্ডা হিসাবে পিডি এসকিএলসি = এসকিউএল কনটেক্সট (এসসি) ডিএফ = পিডি.ড্রেড_সিএসভি (আর ডিডি: \ বেস্টবুয় \ ট্রেনসিএসভি ') এসডিএফ = এসকিএলসিএফেরেটেটা (df) ----> ত্রুটি
নেহা

1
ডেটা সায়েন্স.এসই তে স্বাগতম! মন্তব্য যুক্ত করার পরিবর্তে আপনার মূল পোস্টটি সম্পাদনা করুন।
এমরে

ফাইলের পথটি অবশ্যই এইচডিএফএসে থাকতে হবে কেবলমাত্র আপনি ডেটা চালাতে পারবেন
প্রকাশ রেড্ডি

উত্তর:


13

"কীভাবে আমি পিএসপার্ক ডেটাফ্রেমে একটি .csv ফাইল আমদানি করতে পারি?" - এটি করার অনেক উপায় আছে; সবচেয়ে সহজ হ'ল ডেটাব্রিকের স্পার্ক-সিএসভি মডিউলটি দিয়ে পাইপর্ক শুরু করা। আপনি পাইপার্ক দিয়ে শুরু করে এটি করতে পারেন

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

অন্য পদ্ধতিটি হ'ল আরডিডি ব্যবহার করে পাঠ্য ফাইলটিতে পড়তে হবে

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

তারপরে আপনার ডেটাটি রূপান্তর করুন যাতে প্রতিটি আইটেমটি স্কিমা (যেমন ইনটস, স্ট্রিংস, ফ্লোটস ইত্যাদি) এর সঠিক ফর্ম্যাটে থাকে। আপনি তারপর ব্যবহার করতে চাইবেন

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

"এছাড়াও, দয়া করে আমাকে বলুন আমি কীভাবে এক্সএলএসএক্স ফাইল আমদানি করতে পারি?" - এক্সেল ফাইলগুলি "বিগ ডেটা" তে ব্যবহৃত হয় না; স্পার্ক বলতে বোঝায় বড় ফাইল বা ডাটাবেস ব্যবহার করা। যদি আপনার কাছে একটি এক্সেল ফাইল থাকে যা আকারের 50 গিগাবাইট হয় তবে আপনি কিছু ভুল করছেন। এক্সেল এমনকি আকারের একটি ফাইল খুলতে সক্ষম হবে না; আমার অভিজ্ঞতা থেকে, 20MB এবং এক্সেলের উপরে যে কোনও কিছুই মারা যায়।


আমি মনে করি উপরের আরডিডি পদ্ধতির সাথে কোনও সমস্যা থাকতে পারে: ক্ষেত্রগুলিতে নিউলাইনগুলি থাকতে পারে (তবে ডাবল-কোট দ্বারা বেষ্টিত), যেমন, সরঞ্জাম. ietf.org/html/rfc4180#section-2
ফ্লো 2 কে

আপনি xlsx ফাইলকে সিএসভিতে রূপান্তর করতে সরঞ্জামগুলি ব্যবহার করতে পারেন (gnumeric বা ওপেন অফিস এপিএসের মতো জিনিস)। তারপরে আপনি ডেটা সায়েন্সটি স্বাভাবিক হিসাবে করতে পারেন
ভপঠাক

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

আমার স্থানীয় ডিরেক্টরিতে একটি ফাইল 'টেম্পে সিএসভি' রয়েছে। সেখান থেকে স্থানীয় উদাহরণ ব্যবহার করে আমি নিম্নলিখিতটি করি:

>>> 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 হল কাঁচা পাঠ্য ফাইল যা আমরা একটি স্পার্ক আরডিডি প্রেরণ করি। আপনাকে একটি ডেটা ফ্রেম তৈরি করার জন্য, আপনি সিএসভি আলাদা করতে চান এবং প্রতিটি এন্ট্রিকে একটি সারি টাইপ করতে চান, যেমন আমি ডি 1 তৈরি করার সময় করি। আরডিডি থেকে ডেটা ফ্রেম তৈরি করা শেষ পদক্ষেপ।


0

আপনি ডেটাব্রিক্স দ্বারা প্যাকেজ স্পার্ক- সিএসভি ব্যবহার করতে পারেন যা স্বয়ংক্রিয়ভাবে আপনার জন্য অনেক কিছু করে, যেমন শিরোনামের যত্ন নেওয়া, এস্কেপ অক্ষর ব্যবহার, স্বয়ংক্রিয় স্কিমা অনুমানকরণ ইত্যাদি ইত্যাদি। স্পার্ক ২.০ থেকে শুরু করে সিএসভিগুলির সাথে কাজ করার জন্য একটি ইনবিল্ট ফাংশন রয়েছে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.