Невозможно записать в файл parque с помощью fullSet.repartition(1).saveAsParquetFile(swift://notebooks.spark/tweetsFull.parquet)

Я пытаюсь создать приложение, используя искру apache, используя IBM bluemix. (Ссылка https://developer.ibm.com/clouddataservices/sentiment-analysis-of-twitter-hashtags/). Я использую потоковый API для потоковой передачи данных и успешно создал таблицу SQL, используя искровой SQL. Затем я прочитал данные, используя SQL select *, но когда я не могу записать данные в файл paraque в пространстве хранения объектов на платформе IBM Bluxmix. Ниже приведен пример кода.

.
.
.
var df = sqlContext.createDataFrame( workingRDD, schemaTweets )
df.registerTempTable("tweets_table")
df.printSchema()
  root
   |-- author: string (nullable = true)
   |-- date: string (nullable = true)
   |-- lang: string (nullable = true)
   |-- text: string (nullable = true)

val results = sqlContext.sql("select * from tweets_table limit 5")
results.show
  +--------------------+--------------------+----+--------------------+
  |              author|                date|lang|                text|
  +--------------------+--------------------+----+--------------------+
  |       abc          ?|Sun Nov 29 03:30:...|  en|RT @fdfds: W........|
  |   fdsfsdf          ?|Sun Nov 29 03:30:...|  en|#NewsIndofsdfM  R...|
  |           .fsdfdsf  |Sun Nov 29 03:30:...|  en|RT @Lsfddsfds.    ..|
  |           Wsfsfd    |Sun Nov 29 03:30:...|  en|My gfsdfsdfdshtps...|
  |           Ffsdfsdf  |Sun Nov 29 03:30:...|  en|RT @Ayfsdfsdf : W...|
  +---------------------+--------------------+----+--------------------+

  results.repartition(1).saveAsParquetFile("swift://notebooks.spark/tweets_1.parquet")

Здесь в хранилище объектов видно, что файл tweets_1.parquet создан, но он отображается как 0 байт. Может ли кто-нибудь дать мне знать, где я сделал ошибку?


person Gowtam    schedule 29.11.2015    source источник
comment
Какую версию Spark вы используете?   -  person Glennie Helles Sindholt    schedule 29.11.2015
comment
Хорошо. Я считаю, что saveAsParquetFile устарел в этой версии, и вместо этого вы должны использовать `dataframe.write.parquet(..) . Однако saveAsParquet, конечно, должен работать ;) Вы говорите, что tweets_1.parquet создается, но как насчет файла _SUCCESS? Это создано? Если нет, вам, вероятно, следует просмотреть файлы журналов, чтобы увидеть, не возникают ли какие-либо исключения.   -  person Glennie Helles Sindholt    schedule 29.11.2015
comment
Я попытался использовать df.write.parquet(swift://notebooks.spark/tweetsFull_3.parquet). Но все еще видит файл как 0 байт. Файл _SUCCESS также имеет размер 0 байт. Используя saveAsParquet(), я вижу предупреждения как SLF4J: не удалось загрузить класс org.slf4j.impl.StaticLoggerBinder. SLF4J: по умолчанию используется реализация регистратора без операций (NOP) SLF4J: см. slf4j.org/codes.html #StaticLoggerBinder для получения дополнительной информации.   -  person Gowtam    schedule 30.11.2015
comment
Хм.. странно. Если файл _SUCCESS создан, все должно быть в порядке. Если вместо этого вы сделаете saveAsText, будет ли файл пустым?   -  person Glennie Helles Sindholt    schedule 30.11.2015
comment
@Goutham - эти ошибки отмечены в документе как безопасные для игнорирования. Я проверил это, и это сработало для меня; никаких проблем, но я не заметил размер файла. Я перепроверю.   -  person Chris Shepherd    schedule 03.12.2015


Ответы (2)


Когда я пробежал этот же пример, мой файл Parquet был сохранен в хранилище объектов, но разбит на несколько файлов в подкаталоге с тем же именем:

tweetsFull.parquet  12/02/2015 1:48 PM  0 KB
tweetsFull.parquet/part-r-00000-c3709e95-8f23-4ec5-bdf0-f0940b2cd94b.gz.parquet 12/02/2015 1:49 PM  16 KB
tweetsFull.parquet/_common_metadata 12/02/2015 1:49 PM  1 KB
tweetsFull.parquet/_metadata    12/02/2015 1:49 PM  3 KB
tweetsFull.parquet/_SUCCESS 12/02/2015 1:49 PM  0 KB

Это работает, если я читаю из этого файла. Это то, что вы видите?

person Chris Shepherd    schedule 02.12.2015

Извини. Я ошибся из-за имени папки tweets_1.parquet, которое отображается как 0 байт. Я думал, что tweets_1.parquet — это единственный файл, который необходимо создать. Но это папка, и в ней я могу видеть все действительные файлы.

person Gowtam    schedule 03.12.2015