如何使用小胡子迭代两个数组

时间:2019-01-03 07:51:22

标签: java scala mustache

我通过使用如下数据框创建了两个数组。

Array1:

val df1 = hc.sql("select name from employee")
val name = df1.collect().map(_.getString(0))

Array2:

val df2 = hc.sql("select dept from employee")
val dept= df2.collect().map(_.getString(0))

现在,我想使用胡子创建动态SQL。我在下面的scala程序中尝试过以下方法。

object Sample {

  def main(args: Array[String]): Unit = {

    val mf: MustacheFactory = new DefaultMustacheFactory

    val Conf = new SparkConf().setAppName("Form5500")
    val sc = new SparkContext(Conf)
    val hc = new HiveContext(sc)

    // preparing a query
    val query = mf.compile("sql/sample.sql")
    val returnQuery = new StringWriter()
    val jMap = new java.util.HashMap[String, Object]()

    val df1 = hc.sql("select name from employee")
    val name = df1.collect().map(_.getString(0))

    val df2 = hc.sql("select dept from employee")
    val dept= df2.collect().map(_.getString(0))

    jMap.put("condition","true")
    jMap.put("name", name)
    jMap.put("dept", dept)

    query.execute(returnQuery, jMap).flush()

    // returns dynamically built sql
    println(returnQuery.toString)
  }

}

我的sample.sql文件如下所示,使用胡子

create table sample(
    id string
    {{#condition}}
    , if_block string
    {{/condition}}
    {{^condition}}
    , else_block string
    {{/condition}}
    {{#name}}
       {{#dept}}
       , {{name}}_{{dept}} string
       {{/dept}}
    {{/name}}
)

我正在得到空字符串代替{{name}}_{{dept}}。 请让我知道如何使用胡子来获得高于价值的价值。

预先感谢

0 个答案:

没有答案