无法使用fullSet.repartition(1).saveAsParquetFile(“swift://notebooks.spark/tweetsFull.parquet”)写入parque文件

时间:2015-11-29 10:37:04

标签: scala apache-spark ibm-cloud apache-spark-sql spark-streaming

我正在尝试使用IBM bluemix使用apache spark构建应用程序。 (参考https://developer.ibm.com/clouddataservices/sentiment-analysis-of-twitter-hashtags/)。我正在使用流API来传输数据,并使用spark SQL成功创建了SQL表。然后我使用SQL select *读取数据,但是当我无法将数据写入IBM Bluxmix平台上的对象存储空间中的paraque文件时。以下是示例代码

.
.
.
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字节。任何人都可以让我知道我在哪里犯了错误吗?

2 个答案:

答案 0 :(得分: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

如果我从这个文件中读取它是有效的。这就是你所看到的吗?

答案 1 :(得分:2)

对不起。我被错误的文件夹名称tweets_1.parquet,显示为0字节。我认为tweets_1.parquet是唯一必须创建的文件。但它是一个文件夹,我可以看到所有有效的文件。