Les Pandas dataframe de susciter dataframe “ne Peut pas fusionner erreur de type”

J'ai données au format csv, et créé des Pandas dataframe à l'aide de read_csv et en forçant toutes les colonnes comme une chaîne de caractères.
Puis, quand j'essaie de créer l'Étincelle dataframe de l'Pandas dataframe, j'obtiens le message d'erreur ci-dessous.

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

Ici est un exemple. Je suis le téléchargement de données publiques et la création de pandas dataframe mais l'étincelle ne crée pas d'étincelle dataframe de l'pandas dataframe.

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) pourquoi avez-vous de lire les données en local juste à paralléliser. C'est l'anti-modèle. b) toutes les colonnes soient marqués comme object suggérer quelques données hétérogènes qui n'est pas pris en charge par Spark DataFrames.
  • Vous avez raison, ce n'est pas la bonne façon de lire localement, mais depuis d'autres options ont échoué, j'ai espéré un dataframe de pandas sera facile pour étincelle à la poignée. Comme vous l'avez dit, les colonnes sont hétérogènes. Est-il une solution que je puisse essayer?
  • Pouvez-vous fournir une un minimum de reproductibles exemple? Certains jouets échantillon qui illustrent ce qui se passe là-bas...
  • J'ai ajouté un exemple de code avec les données publiques.