我正在尝试使用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字节。任何人都可以让我知道我在哪里犯了错误吗?
答案 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是唯一必须创建的文件。但它是一个文件夹,我可以看到所有有效的文件。