İç içe geçmiş sözlüklerin bir örneğim var, ör. ds = [{'a': {'b': {'c': 1}}}]
ve iç içe sözlüklerçıkarım şemasında bir kıvılcım DataFrame oluşturmak istiyorum. sqlContext.createDataFrame(ds).printSchema()
kullanma şemaİç içe sözlükten Spark DataFrame oluşturma
root
|-- a: map (nullable = true)
| |-- key: string
| |-- value: map (valueContainsNull = true)
| | |-- key: string
| | |-- value: long (valueContainsNull = true)
aşağıdaki verir bana ama ne gerekir bu
root
|-- a: struct (nullable = true)
| |-- b: struct (nullable = true)
| | |-- c: long (nullable = true)
ikinci şema öncelikle bu sqlContext.jsonRDD(sc.parallelize([json.dumps(ds[0])])).printSchema()
gibi jsonRDD
ile yüklemeye sonra JSON sözlükleri dönüştürerek ve oluşturulabilir olduğunu. Ama bu büyük dosyalar için oldukça hantal olurdu.
Sözlüklerin dönüştürüleceğini düşündüğümüz sözlükler pyspark.sql.Row()
nesnelerini şemayı çıkaracak, ancak sözlükler farklı şemalar (örneğin, ilk önce bazı anahtar eksik) olduğunda işe yaramadı.
Bunu yapmak için başka bir yolu var mı? Teşekkürler!
(benim soruya bakın) kaçmak istedim. Sadece şemalarını almak için sözlüklerden RDD oluşturmaya gerek kalmadan bunu yapmanın bir yolu olduğunu umuyordum. – Marigold
Ortadaki paragrafı kaçırdığım için üzgünüm.Ne yazık ki, 'sözlükten şema çıkar' özelliği artık kullanılmıyorsa, umarım başka bir yol da vardır. – hyim