Я запускаю Spark в автономном режиме с каталогом Hive.Я пытаюсь загрузить данные из внешнего документа и затем сохранить их обратно на диск в формате Parquet.
rdd = sc \
.textFile('/data/source.txt', NUM_SLICES) \
.map(lambda x: (x[:5], x[6:12], gensim.utils.simple_preprocess(x[13:])))
schema = StructType([
StructField('c1', StringType(), False),
StructField('c2', StringType(), False),
StructField('c3', ArrayType(StringType(), True), False),
])
data = sql_context.createDataFrame(rdd, schema)
data.write.mode('overwrite').parquet('/data/some_dir')
Когда я пытаюсь прочитать этот файл обратно, происходит сбой с:
AnalysisException: 'Unable to infer schema for Parquet. It must be specified manually.;'
То, что он не может просто проанализировать местоположение или файлы.
Теперь, если я посмотрю на местоположение на всех 3 рабочих узлах, оно выглядит следующим образом:
clush -ab 'locate some_file'
---------------
master
---------------
/data/some_file
/data/some_file/._SUCCESS.crc
/data/some_file/_SUCCESS
---------------
worker1
---------------
/data/some_file
/data/some_file/_temporary
/data/some_file/_temporary/0
/data/some_file/_temporary/0/_temporary
/data/some_file/_temporary/0/task_20180511211832_0010_m_000000
/data/some_file/_temporary/0/task_20180511211832_0010_m_000039
/data/some_file/_temporary/0/task_20180511211832_0010_m_000000/.part-00000-1b2764a6-28a3-4ba2-9493-766074eef4d5-c000.snappy.parquet.crc
/data/some_file/_temporary/0/task_20180511211832_0010_m_000000/part-00000-1b2764a6-28a3-4ba2-9493-766074eef4d5-c000.snappy.parquet
/data/some_file/_temporary/0/task_20180511211832_0010_m_000039/.part-00039-1b2764a6-28a3-4ba2-9493-766074eef4d5-c000.snappy.parquet.crc
/data/some_file/_temporary/0/task_20180511211832_0010_m_000039/part-00039-1b2764a6-28a3-4ba2-9493-766074eef4d5-c000.snappy.parquet
---------------
worker2
---------------
/data/some_file
/data/some_file/_temporary
/data/some_file/_temporary/0
/data/some_file/_temporary/0/_temporary
/data/some_file/_temporary/0/task_20180511211832_0010_m_000011
/data/some_file/_temporary/0/task_20180511211832_0010_m_000017
/data/some_file/_temporary/0/task_20180511211832_0010_m_000029
/data/some_file/_temporary/0/task_20180511211832_0010_m_000038
/data/some_file/_temporary/0/task_20180511211832_0010_m_000011/.part-00011-1b2764a6-28a3-4ba2-9493-766074eef4d5-c000.snappy.parquet.crc
/data/some_file/_temporary/0/task_20180511211832_0010_m_000011/part-00011-1b2764a6-28a3-4ba2-9493-766074eef4d5-c000.snappy.parquet
/data/some_file/_temporary/0/task_20180511211832_0010_m_000017/.part-00017-1b2764a6-28a3-4ba2-9493-766074eef4d5-c000.snappy.parquet.crc
/data/some_file/_temporary/0/task_20180511211832_0010_m_000017/part-00017-1b2764a6-28a3-4ba2-9493-766074eef4d5-c000.snappy.parquet
/data/some_file/_temporary/0/task_20180511211832_0010_m_000029/.part-00029-1b2764a6-28a3-4ba2-9493-766074eef4d5-c000.snappy.parquet.crc
/data/some_file/_temporary/0/task_20180511211832_0010_m_000029/part-00029-1b2764a6-28a3-4ba2-9493-766074eef4d5-c000.snappy.parquet
/data/some_file/_temporary/0/task_20180511211832_0010_m_000038/.part-00038-1b2764a6-28a3-4ba2-9493-766074eef4d5-c000.snappy.parquet.crc
/data/some_file/_temporary/0/task_20180511211832_0010_m_000038/part-00038-1b2764a6-28a3-4ba2-9493-766074eef4d5-c000.snappy.parquet
---------------
worker3
---------------
/data/some_file
/data/some_file/_temporary
/data/some_file/_temporary/0
/data/some_file/_temporary/0/_temporary
/data/some_file/_temporary/0/task_20180511211832_0010_m_000040
/data/some_file/_temporary/0/task_20180511211832_0010_m_000043
/data/some_file/_temporary/0/task_20180511211832_0010_m_000046
/data/some_file/_temporary/0/task_20180511211832_0010_m_000040/.part-00040-1b2764a6-28a3-4ba2-9493-766074eef4d5-c000.snappy.parquet.crc
/data/some_file/_temporary/0/task_20180511211832_0010_m_000040/part-00040-1b2764a6-28a3-4ba2-9493-766074eef4d5-c000.snappy.parquet
/data/some_file/_temporary/0/task_20180511211832_0010_m_000043/.part-00043-1b2764a6-28a3-4ba2-9493-766074eef4d5-c000.snappy.parquet.crc
/data/some_file/_temporary/0/task_20180511211832_0010_m_000043/part-00043-1b2764a6-28a3-4ba2-9493-766074eef4d5-c000.snappy.parquet
/data/some_file/_temporary/0/task_20180511211832_0010_m_000046/.part-00046-1b2764a6-28a3-4ba2-9493-766074eef4d5-c000.snappy.parquet.crc
/data/some_file/_temporary/0/task_20180511211832_0010_m_000046/part-00046-1b2764a6-28a3-4ba2-9493-766074eef4d5-c000.snappy.parquet
Я не могу понять, почему это сохраняет это в «_theorary», а не в постоянной папке.
Дайте мне знать, если вам нужен дополнительный контекст.
Спасибо