Предполагалось, что это будет простой тест для перемещения первой строки моего информационного кадра в новый информационный кадр.
первый выпуск df.first () возвращает «строку», а не фрейм данных.
Следующая проблема, когда я пытаюсь использовать spark.createDataFrame (df.first ()), он скажет вам, что не может вывести схему.
следующая проблема. Spark.createDataFrame (df.first (), df.schema) не работает.
так для исходной схемы ниже:
root
|-- entity_name: string (nullable = true)
|-- field_name: array (nullable = true)
| |-- element: string (containsNull = true)
|-- data_row: array (nullable = true)
| |-- element: string (containsNull = true)
|-- data_schema: array (nullable = true)
| |-- element: string (containsNull = true)
Я определил схему в коде так:
xyz_schema = StructType([
StructField('entity_name',StringType(),True)
,StructField('field_name',ArrayType(StringType(),True),True)
,StructField('data_row',ArrayType(StringType(),True),True)
,StructField('data_schema',ArrayType(StringType(),True),True)
])
print(xyz.first())
xyz_1stRow = spark.createDataFrame(xyz.first(), xyz_schema)
Выше не работает! Я получаю следующую ошибку:
"TypeError: StructType can not accept object 'parquet/assignment/v1' in type <class 'str'>"
это то, что напечатано в печати ...
Строка (ENTITY_NAME = 'паркет / назначение / v1',
field_name = ['Contract_ItemNumber', 'UPC', 'DC_ID', 'AssignDate',
«AssignID», «AssignmentQuantity», «ContractNumber», «MaterialNumber»,
'OrderReason', 'RequirementCategory', 'MSKU'], data_row = ['\ n
350,192660436296,2001,10 / 1 / 2019,84009248020191000,5,840092480,1862291010,711, V1 \ п \ т \ т \ т \ т \ т»,
«\ П
180,191454773838,2001,10 / 1 / 2019,84009248020191000,6,840092480,1791301010,711, V1 \ п \ т \ т \ т \ т \ т '],
data_schema = ['StringType', 'StringType', 'StringType', None,
'StringType', 'IntegerType', 'StringType', 'StringType', 'StringType',
'StringType', 'StringType'])
Что я делаю не так? почему stringtype не принимает строку?
Я работаю в pyspark (текущая версия) с базами данных Azure. Я бы предпочел остаться с pyspark, а не с R, а не с Scala, и не должен был бы конвертировать в панд и рисковать, если мои данные будут испорчены при конвертации между всеми этими языками.