nie mogę się wypowiedzieć, jak mam mniej niż 50 powtórzeń
Po przedstawieniu struktury json z struct.struct.field i jest obecny nazw jak:
ns2: struct.struct.field backticks (`) nie działa.
jsonDF = sqlc.read.load('jsonMsgs', format="json")
jsonDF.registerTempTable("masterTable")
sqlc.select("select `sn2:AnyAddRq.AnyInfo.noInfo.someRef.myInfo.someData.Name` AS sn2_AnyAddRq_AnyInfo_noInfo_someRef_myInfo_someData_Name from masterTable").show()
pyspark.sql.utils.AnalysisException: u "nie może rozwiązać 'sn2:AnyAddRq.AnyInfo.noInfo.someRef.myInfo.someData.Name
'
Jeśli usunąć SN2: pola, kwerenda wykonuje
Próbowałem również z pojedynczy cudzysłów (. „), odwrotny ukośnik (\) i podwójne cudzysłowy («»)
jedyny sposób to działa, czy gdybym zarejestrować inną tabelę temp na SN2: strucutre, jestem w stanie uzyskać dostęp do pól w nim jak tak
anotherDF = jsonDF.select("sn2:AnyAddRq.AnyInfo.noInfo.someRef.myInfo.someData")
anotherDF.registerTempTable("anotherDF")
sqlc.select("select Name from anotherDF").show()
Spróbuj uciec je apostrofami sqlContext.sql („select«column-1»z myDF”) – Identity1
to nie działa, ponieważ będzie ono traktować „kolumnę-1” jako ciąg nie nazwa kolumny. – sfactor
Standard SQL-99 określa, że podwójny cudzysłów (") służy do rozgraniczania identyfikatorów. Spróbuj je z podwójnymi cudzysłowami, może zachowując zewnętrzne w pojedynczych cudzysłowach – Identity1