火花防止型のJavaプロジェクトで情報/デバッグレベルで火花データセットprintSchemaのロギングを行う方法

シャム:

火花のJavaプロジェクトに私のスパークScalaのプロジェクトをひそかしようとしています。私は以下のようにScalaでログを持っています

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

    class ClassName{
      val logger  = LoggerFactory.getLogger("ClassName")
      ...
      val dataframe1 = ....///read dataframe from text file.
      ...

      logger.debug("dataframe1.printSchema : \n " + dataframe1.printSchema; //this is working fine.
    }

今、私は以下のようなJava 1.8でそれを記述しようとしています

public class ClassName{

    public static final Logger logger  = oggerFactory.getLogger("ClassName"); 
      ...
     Dataset<Row> dataframe1 = ....///read dataframe from text file.
     ...

     logger.debug("dataframe1.printSchema : \n " + dataframe1.printSchema()); //this is not working 

}

私はいくつかの方法を試してみましたが、何もデバッグ/情報モードでprintSchemaをログに記録するように働きました。

dataframe1.printSchema()//これは、実際に文字列を追加することはできませんので、voidを返します。

ロギングは、スパーク-javaの生産グレードのプロジェクトをどのように実際に行われていますか?私は、デバッグにログインするために従う必要が最善のアプローチは何ですか?

上記のシナリオを処理する方法は?すなわちlog.debug(dataframe1.printSchema())Javaで?

Achilleus:

あなたは使用することができますdf.schema.treeStringこれは、リターンの単位()と同等に比べて、文字列Voidで返されるJavaでをdf.printSchemaこれはScalaで真であると私はそれはそれは助けなら、私が知っているJava.Letに同じであると考えています。

scala> val df = Seq(1, 2, 3).toDF()
df: org.apache.spark.sql.DataFrame = [value: int]

scala> val x = df.schema.treeString
x: String =
"root
 |-- value: integer (nullable = false)
"

scala> val y = df.printSchema
root
 |-- value: integer (nullable = false)

y: Unit = ()

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=315408&siteId=1