2016-09-30 3 views
1

私はこのようなSQLコンテキストに寄木細工のファイルをロードします。私はからGROUPBYを使用している場合、しかし、pyspark sqlがgroup by節で正しくカウントされないのはなぜですか?

+----------------+----------+ 
|count(name)  |name  | 
+----------------+----------+ 
|    0|  null| 
|   226307|   x| 
+----------------+----------+ 

sqlCtx.sql('SELECT count(name), name from type_table group by name order by count(name)').show() 

結果:その後、私はこの単純なクエリを実行

sqlCtx = SQLContext(sc) 
rdd_file = sqlCtx.read.parquet("hdfs:///my_file.parquet") 
rdd_file.registerTempTable("type_table") 

rddセット。私は別の結果を得ました:

sqlCtx.sql("SELECT name FROM type_table").groupBy("name").count().show() 

+----------+------+ 
| name  | count| 
+----------+------+ 
|   x|226307| 
|  null|586822| 
+----------+------+ 

xの数は2つの方法で同じですが、nullは全く異なります。それは、SQL文が正しくグループでnullを数えないようです。私が間違ったことを指摘できますか?

おかげで、

+0

DataFrameスキーマを印刷できますか? – eliasah

答えて

3

数(名)は、COUNT(*)を与えれば、それは同様にあなたにnull値を与える、null値を除外します。

以下を試してください。

sqlCtx.sql('SELECT count(*), name from type_table group by name order by count(*)').show() 
関連する問題