У меня есть данные csv и создан фрейм данных pnadas с использованием read_csv и форсирование всех столбцов в виде строки. Затем, когда я пытаюсь создать световой блок данных из фреймворка pandas, я получаю сообщение об ошибке ниже.pandas dataframe для искробезопасного кадра данных «Невозможно объединить ошибку типа»
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'>
Вот пример. Я загружаю общедоступные данные и создаю базу данных pandas, но искра не создает искровой фреймворк из фреймворка pandas.
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)
а) почему вы читаете данные локально только для распараллеливания. Это анти-шаблон. б) все столбцы, помеченные как «объект», предлагают некоторые гетерогенные данные, которые не поддерживаются Spark DataFrames. – zero323
Вы правы, это не правильный способ читать локально, но поскольку другие параметры не удались, я надеялся, что фрейм данных из панд будет легко исправить. Как вы сказали, столбцы являются гетерогенными. Есть ли способ обхода, который я могу попробовать? –
Можете ли вы предоставить [mcve]? Некоторые образцы игрушек, которые иллюстрируют, что там происходит ... – zero323