Saya mencoba menulis hasil bingkai data ke file teks dan saya mendapatkan kesalahan di bawah ini, saya tidak mengerti apa yang sebenarnya salah dengan tipe data

Berikut adalah hasil Dataframe saya

enter image description here

Saya menggunakan kode di bawah ini untuk menulis hasil ke dalam file teks

User_cast.write.mode("overwrite").option("compression","bzip2").format("text").save("loc/path")

Mendapatkan kesalahan di bawah ini

pyspark.sql.utils.AnalysisException: u'Text data source does not support double data type.;'
-1
Rahul 27 Mei 2020, 23:12

1 menjawab

Jawaban Terbaik

Itu memang perilaku yang diharapkan. Anda memiliki dua opsi untuk menyelesaikan ini. Entah Anda melemparkan semua jenis kerangka data Anda ke StringType (misalnya menggunakan jawaban ini cara mentransmisikan semua kolom kerangka data ke string) dan menggabungkannya menjadi satu (text sumber data hanya mendukung satu kolom), atau simpan sebagai csv. Merekonstruksi masalah Anda:

from pyspark.sql import SparkSession


spark = SparkSession.builder.getOrCreate()
colnames = [str(i+1) for i in range(11)]
df1 = spark._sc.parallelize([
  [it for it in range(11)], 
  [it for it in range(1,12)]]
).toDF((colnames))


df1.write.mode("overwrite").option("compression", "bzip2").format("text").save("./path")

Py4JJavaError: An error occurred while calling o67.save.
: org.apache.spark.sql.AnalysisException: Text data source does not support bigint data type.;

Namun, saya dapat menulis ke CSV, dengan mengubah format menjadi csv, seperti:

df1.write.mode("overwrite").option("compression", "bzip2").format("csv").save("./path")

Mencari output (yang akan bervariasi pada partisi Anda, dll.)

! ls path
part-00000-7db004e7-7309-466c-ba7b-112127e286ae-c000.csv.bz2
part-00001-7db004e7-7309-466c-ba7b-112127e286ae-c000.csv.bz2
part-00003-7db004e7-7309-466c-ba7b-112127e286ae-c000.csv.bz2
_SUCCESS

Semoga ini membantu!

2
napoleon_borntoparty 27 Mei 2020, 20:42