私はcsvデータを持ち、read_csvを使ってpnadasデータフレームを作成し、すべてのカラムを文字列として強制します。 次に、pandasデータフレームからsparkデータフレームを作成しようとすると、以下のエラーメッセージが表示されます。pandas dataframe to data frame "タイプエラーをマージできません"
from pyspark import SparkContext
from pyspark.sql import SQLContext
from pyspark.sql.types import *
z=pd.read_csv("mydata.csv", dtype=str)
z.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 74044003 entries, 0 to 74044002
Data columns (total 12 columns):
primaryid object
event_dt object
age object
age_cod object
age_grp object
sex object
occr_country object
drug_seq object
drugname object
route object
outc_cod object
pt object
q= sqlContext.createDataFrame(z)
File "<stdin>", line 1, in <module>
File "/usr/hdp/2.4.2.0-258/spark/python/pyspark/sql/context.py", line 425, in createDataFrame
rdd, schema = self._createFromLocal(data, schema)
File "/usr/hdp/2.4.2.0-258/spark/python/pyspark/sql/context.py", line 341, in _createFromLocal
struct = self._inferSchemaFromList(data)
File "/usr/hdp/2.4.2.0-258/spark/python/pyspark/sql/context.py", line 241, in _inferSchemaFromList
schema = reduce(_merge_type, map(_infer_schema, data))
File "/usr/hdp/2.4.2.0-258/spark/python/pyspark/sql/types.py", line 862, in _merge_type
for f in a.fields]
File "/usr/hdp/2.4.2.0-258/spark/python/pyspark/sql/types.py", line 856, in _merge_type
raise TypeError("Can not merge type %s and %s" % (type(a), type(b)))
TypeError: Can not merge type <class 'pyspark.sql.types.DoubleType'> and <class 'pyspark.sql.types.StringType'>
これは例です。パブリックデータをダウンロードしてパンダデータフレームを作成していますが、スパークはパンダデータフレームからスパークデータフレームを作成しません。
import pandas as pd
from pyspark import SparkContext
from pyspark.sql import SQLContext
from pyspark.sql.types import *
url ="http://www.nber.org/fda/faers/2016/demo2016q1.csv.zip"
import requests, zipfile, StringIO
r = requests.get(url, stream=True)
z = zipfile.ZipFile(StringIO.StringIO(r.content))
z.extractall()
z=pd.read_csv("demo2016q1.csv") # creates pandas dataframe
Data_Frame = sqlContext.createDataFrame(z)
a)は、なぜあなただけの並列化データをローカルに読んでください。これは反パターンです。 b)「オブジェクト」としてマークされているすべての列は、Spark DataFramesでサポートされていない異種データを示唆しています。 – zero323
あなたは正しいです、それはローカルで読む正しい方法ではありませんが、他のオプションが失敗したので、私はパンダからのデータフレームが簡単に処理できることを期待しました。あなたが言ったように、コラムは異種です。私が試すことができる回避策はありますか? –
あなたは[mcve]を提供できますか?いくつかのおもちゃのサンプルは、そこに起こっていることを説明します... – zero323