2015-09-02 11 views
7

Ho un file Parquet non compresso con dati di tipo "registro crawler".L'importazione di spark di file Parquet converte le stringhe in bytearray

ho importarlo in Spark tramite PySpark come

sq = SQLContext(sc) p = sq.read.parquet('/path/to/stored_as_parquet/table/in/hive') p.take(1).show()

Questo dimostra stringhe nei dati di origine convertiti in

Row(host=bytearray(b'somehostname'), (checksum=bytearray(b'stuff'))...)

Quando faccio p.dtypes vedo

((host binary), (checksum binary) ....).

Cosa posso fare per evitare questa conversione o alternativamente come faccio a convertire indietro a quello che ho bisogno

vale a dire quando lo faccio p.dtypes voglio vedere

((host string), (checksum string) ....)

Grazie.

+0

Parquet può essere non compresso? Come viene creato il file Parquet? Sembra che sia stato scritto come un bytearray ... –

+0

il file parquet stesso ha tutto dichiarato come stringa e in hive presenta come stringhe - viene creato come risultato della scrittura di una scintilla come risultato di un lavoro ETL. Come un alveare sembra buono. Quando tiro le tabelle dei sottoinsiemi in Spark, ottengo questo comportamento. – Nitin

+0

Non ho chiesto esplicitamente di essere compresso durante la creazione e i messaggi INFO dicono che il file è NON COMPRESO. – Nitin

risposta

7

Mi sono imbattuto nello stesso problema. Aggiunta di

sqlContext.setConf("spark.sql.parquet.binaryAsString","true") 

subito dopo aver creato il mio SqlContext, risolto per me.

+0

chiedendo perché questo è falso per impostazione predefinita – enneppi

Problemi correlati