2016-12-09 12 views
0

私はpyspark上のsparkコードの部分を実行してエラーを取得しようとしています。何が欠けているのか理解してもらえますか?spark-名前の最初の文字で名前を数える方法spark登録テーブル

p1 = pd.DataFrame(final_data,columns = ['Year','Name','Sex','Count'])  
h1 = sqlContext.createDataFrame(p1)   
h1.registerTempTable('namesdb')    
sqlContext.sql("select SUBSTR(Name, 1, 1) as char1, count(Name) FROM namesdb group by char1 order by char1 ASC").toPandas()  

しかし、私はエラーの下に取得しています:ここで

AnalysisException: u"cannot resolve 'char1' given input columns: [Year, Name, Sex, Count]; 

はfinal_data

final_data[:2]   

[[1880, 'Mary', 'F', '7065'],  
[1880, 'Anna', 'F', '2604'] 

答えて

0

はSQLでは、GROUP BY句に「CHAR1としての」割り当てられた列名を使用することはできませんが、ちょうどこのよう句によって、あなたのグループ内の機能を繰り返すことができます:

select SUBSTR(Name, 1, 1) as char1, count(Name) FROM namesdb group by SUBSTR(NAME,1,1) order by char1 ASC 
+0

グレート、感謝します君は !!それは働いている。 – ytasfeb15

0

用サンプルレコードはあなたのクエリは以下のようにする必要があります。 Hereは、SQL Group Byでエイリアスがどのように動作するかの詳細です。

df1 = sqlContext.sql("select char1, count(Name) from (select *,SUBSTR(Name, 1, 1) char1 FROM namesdb) group by char1 order by char1 ASC") 
df1.show() 
関連する問題