Я пытаюсь преобразовать словарь: data_dict = {'t1': '1', 't2': '2', 't3': '3'}
в фрейм данных:
key | value|
----------------
t1 1
t2 2
t3 3
Для этого я попытался:
schema = StructType([StructField("key", StringType(), True), StructField("value", StringType(), True)])
ddf = spark.createDataFrame(data_dict, schema)
Но я получил следующую ошибку:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/Cellar/apache-spark/2.4.5/libexec/python/pyspark/sql/session.py", line 748, in createDataFrame
rdd, schema = self._createFromLocal(map(prepare, data), schema)
File "/usr/local/Cellar/apache-spark/2.4.5/libexec/python/pyspark/sql/session.py", line 413, in _createFromLocal
data = list(data)
File "/usr/local/Cellar/apache-spark/2.4.5/libexec/python/pyspark/sql/session.py", line 730, in prepare
verify_func(obj)
File "/usr/local/Cellar/apache-spark/2.4.5/libexec/python/pyspark/sql/types.py", line 1389, in verify
verify_value(obj)
File "/usr/local/Cellar/apache-spark/2.4.5/libexec/python/pyspark/sql/types.py", line 1377, in verify_struct
% (obj, type(obj))))
TypeError: StructType can not accept object 't1' in type <class 'str'>
Итак, я попробовал это, не указав никакой схемы, а только типы данных столбца: ddf = spark.createDataFrame(data_dict, StringType()
& ddf = spark.createDataFrame(data_dict, StringType(), StringType())
Но оба результата приводят к кадру данных с одним столбцом, который является ключом словарь, как показано ниже:
+-----+
|value|
+-----+
|t1 |
|t2 |
|t3 |
+-----+
Может кто-нибудь дать мне знать, как преобразовать словарь в фрейм данных spark в PySpark?