Преобразованный PySpark Pandas фреймы данных терпят неудачу при операциях фрейма данных - PullRequest
0 голосов
/ 01 апреля 2020

Я очень новичок в PySpark. У меня было несколько наборов данных ранее в pandas, и мне удалось преобразовать их после Преобразование Pandas dataframe в ошибку Spark dataframe . Я думаю, что они успешно конвертируются:

from pyspark.sql.types import *

# Auxiliar functions
def equivalent_type(f):
    if f == 'datetime64[ns]': return DateType()
    elif f == 'int64': return LongType()
    elif f == 'int32': return IntegerType()
    elif f == 'float64': return FloatType()
    else: return StringType()

def define_structure(string, format_type):
    try: typo = equivalent_type(format_type)
    except: typo = StringType()
    return StructField(string, typo)


# Given pandas dataframe, it will return a spark's dataframe.
def pandas_to_spark(pandas_df):
    columns = list(pandas_df.columns)
    types = list(pandas_df.dtypes)
    struct_list = []
    for column, typo in zip(columns, types): 
      struct_list.append(define_structure(column, typo))
    p_schema = StructType(struct_list)
    return sqlContext.createDataFrame(pandas_df, p_schema)


x1_sdf = pandas_to_spark(x1_df)
x2_sdf = pandas_to_spark(x2_df)
x3_sdf = pandas_to_spark(x3_df)
x4_sdf = pandas_to_spark(x4_df)

Это выводит (в блоках данных):

x1_sdf:pyspark.sql.dataframe.DataFrame = [x1x1: string, x1x2: date ... 12 more fields]
x2_sdf:pyspark.sql.dataframe.DataFrame = [x2x1: string, x2x2: string ... 8 more fields]
x3_sdf:pyspark.sql.dataframe.DataFrame = [x3x1: date, x3x2: long ... 1 more fields]
x4_sdf:pyspark.sql.dataframe.DataFrame = [x4x1: date, x4x2: float ... 4 more fields]

Так что я предполагаю, что они конвертированы успешно, я также могу посмотреть на схему, и кажется, правильно. Затем я пытаюсь count() и получаю следующую ошибку:

org.apache.spark.SparkException: Job aborted due to stage failure: Task 21 in stage 58.0 failed 4 times, most recent failure: Lost task 21.3 in stage 58.0 (TID 704, 10.139.64.16, executor 11): java.util.NoSuchElementException

На самом деле, любая попытка операции с кадром искры, например, x1.head(5), вызывает ту же ошибку. Может кто-нибудь, пожалуйста, объясните мне это? Они не преобразованы должным образом?

...