我正在尝试使用IBM bluemix使用apache spark构建应用程序。(参考https://developer.ibm.com/clouddataservices/sentiment-analysis-of-twitter-hashtags/)。我正在使用流式API来流式传输数据,并且已经成功地使用sparksQL创建了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字节。有人能告诉我哪里做错了吗?
当我运行这个相同的例子时,我的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
如果我从这个文件中读取,它会起作用。这就是你看到的吗?
对不起。我被文件夹名称tweets_1.parquet弄错了,它显示为0字节。我以为tweets_1.parquet是唯一必须创建的文件。但它是一个文件夹,在它下面我可以看到所有有效的文件。