2017-06-22 8 views
1

私はdatabricksブログlink を読んでおり、組み込み関数to_jsonに問題が見つかりました。コードで このチュートリアル内吹いた、それはエラーを返します:to_jsonがsparkでselectExprと連携していません

org.apache.spark.sql.AnalysisException: Undefined function: 'to_json'. This function is neither a registered temporary function nor a permanent function registered in the database 'default'.

んこのチュートリアルでは、この使い方が間違っていることを意味しますか? selectExprにはudfを使用できませんでした。このto_json関数をデフォルトのデータベースに登録するような何かをすることができますか?

val deviceAlertQuery = notifydevicesDS 
         .selectExpr("CAST(dcId AS STRING) AS key", "to_json(struct(*)) AS value") 
         .writeStream 
         .format("kafka") 
         .option("kafka.bootstrap.servers", "host1:port1,host2:port2") 
         .option("toipic", "device_alerts") 
         .start() 

答えて

0

私はメールリストから入手しました。この関数はspark 2.2.0からSQLに追加されません。コミットリンクはcommitです。 これが役立つことを願っています。 THXヒュクジン・クォンとブラック・ヤブズ。

1

は、あなたはまた、スパーク2.xのを使用する必要があります。これは、selectExpr

data.withColumn("key", $"dcId".cast("string")) 
    .select(to_json(struct(data.columns.head, data.columns.tail:_*)).as("value")).show() 

ではなく動作するはず

import org.apache.spark.sql.functions.to_json 

としてto_json機能をimprotする必要が

私はこの助けを願っていますあなたの問題を解決する。

+0

私は試みましたが、うまくいきませんでした。何か案が? –

+0

あなたはすべての列を1つの列としてjsonに変更しようとしていますか? –

+0

答えを更新しました: –

関連する問題