2016-10-22 7 views
0

私はsparkで初心者です。私はpysparkの内部でSQLクエリを使用してデータフレームを作成しました。私は将来の仕事で有利になるための永久的なテーブルとしてそれを作りたい。私は永続的なテーブルを作るために怒鳴るコードjava.lang.RuntimeExceptionの取得:データフレームを永続的なハイブテーブルに変換すると、サポートされていないデータ型NullType

spark.sql("select b.ENTITYID as ENTITYID, cm.BLDGID as BldgID,cm.LEASID as LeaseID,coalesce(l.SUITID,(select EmptyDefault from EmptyDefault)) as SuiteID,(select CurrDate from CurrDate) as TxnDate,cm.INCCAT as IncomeCat,'??' as SourceCode,(Select CurrPeriod from CurrPeriod)as Period,coalesce(case when cm.DEPARTMENT ='@' then 'null' else cm.DEPARTMENT end, null) as Dept,'Lease' as ActualProjected ,fnGetChargeInd(cm.EFFDATE,cm.FRQUENCY,cm.BEGMONTH,(select CurrPeriod from CurrPeriod))*coalesce (cm.AMOUNT,0) as ChargeAmt,0 as OpenAmt,null as Invoice,cm.CURRCODE as CurrencyCode,case when ('PERIOD.DATACLSD') is null then 'Open' else 'Closed' end as GLClosedStatus,'Unposted'as GLPostedStatus ,'Unpaid' as PaidStatus,cm.FRQUENCY as Frequency,0 as RetroPD from CMRECC cm join BLDG b on cm.BLDGID =b.BLDGID join LEAS l on cm.BLDGID =l.BLDGID and cm.LEASID =l.LEASID and (l.VACATE is null or l.VACATE >= ('select CurrDate from CurrDate')) and (l.EXPIR >= ('select CurrDate from CurrDate') or l.EXPIR < ('select RunDate from RunDate')) left outer join PERIOD on b.ENTITYID = PERIOD.ENTITYID and ('select CurrPeriod from CurrPeriod')=PERIOD.PERIOD where ('select CurrDate from CurrDate')>=cm.EFFDATE and (select CurrDate from CurrDate) <= coalesce(cm.EFFDATE,cast(date_add((select min(cm2.EFFDATE) from CMRECC cm2 where cm2.BLDGID = cm.BLDGID and cm2.LEASID = cm.LEASID and cm2.INCCAT = cm.INCCAT and 'cm2.EFFDATE' > 'cm.EFFDATE'),-1) as timestamp) ,case when l.EXPIR <(select RunDate from RunDate)then (Select RunDate from RunDate) else l.EXPIR end)").write.saveAsTable('FactChargeTempTable') 

を使用しますが、私は私はそれが起こっている理由は考えて肝炎ないし、私はそれをどのように解決することができ、このエラー

Job aborted due to stage failure: Task 11 in stage 73.0 failed 1 times, most recent failure: Lost task 11.0 in stage 73.0 (TID 2464, localhost): java.lang.RuntimeException: Unsupported data type NullType. 

を取得しています。親切 私 を導くあなたはUnsupported data type NullTypeを持っているエラーは、あなたが保存されている表の列のいずれかがNULLの列を持っていることを示している カルヤン

答えて

3

、ありがとうございました。この問題を回避するには、テーブルの列に対してNULLチェックを行い、列の1つがすべてNULLでないことを確認します。

ほとんどの場合、NULL内に列が1行しかない場合、Sparkは通常、NullTypeのデータ型の代わりにデータ型(StringType、IntegerTypeなど)を識別できます。

0

@Denny Leeは正しいです。誰かが問題のためJiraを開いて同様の応答を得ました。コメントの1つは、以下の通りです:

マイケル:まあ、寄木細工にはnull型の概念がありません。私はおそらく彼らが本当にこれをやりたいのであれば、CAST型(NULL AS INT)型にnullを提案しますが、実際にはおそらく列を省略する必要があります。

関連する問題