14

スパークコンテキストを作成するメインがあります:

    val sc = new SparkContext(sparkConf)
    val sqlContext = new org.apache.spark.sql.SQLContext(sc)
    import sqlContext.implicits._

次に、データフレームを作成し、データフレームでフィルターと検証を行います。

    val convertToHourly = udf((time: String) => time.substring(0, time.indexOf(':')) + ":00:00")

    val df = sqlContext.read.schema(struct).format("com.databricks.spark.csv").load(args(0))
    // record length cannot be < 2 
    .na.drop(3)
    // round to hours
    .withColumn("time",convertToHourly($"time"))

これはうまくいきます。

しかし、データフレームを送信して検証を別のファイルに移動しようとすると

function ValidateAndTransform(df: DataFrame) : DataFrame = {...}

それはデータフレームを取得し、検証と変換を行います:

 import sqlContext.implicits._

エラーを回避するには: 「値$は StringContext のメンバーではありません」

ただし、を使用する には、次のように新しいファイルで定義されたいずれかimport sqlContext.implicits._ も必要です。sqlContext

val sc = new SparkContext(sparkConf)
val sqlContext = new org.apache.spark.sql.SQLContext(sc)

または、

function ValidateAndTransform(df: DataFrame) : DataFrame = {...}
function

2つのファイル(メインと検証)にしようとしている分離が正しく行われていないような気がします...

これを設計する方法について何か考えはありますか?または単に sqlContext を関数に送信しますか?

ありがとう!

4

1 に答える 1