2015-09-11 7 views

cevap

6

spark.sql.Columnlike yöntem sağlar ama şimdi gibi dize değişmezleri ile çalışır (1.6.0/2.0.0 Spark).

import org.apache.spark.sql.hive.HiveContext 
val sqlContext = new HiveContext(sc) // Make sure you use HiveContext 
import sqlContext.implicits._ // Optional, just to be able to use toDF 

val df = Seq(("foo", "bar"), ("foobar", "foo"), ("foobar", "bar")).toDF("a", "b") 

df.registerTempTable("df") 
sqlContext.sql("SELECT * FROM df WHERE a LIKE CONCAT('%', b, '%')") 

// +------+---+ 
// |  a| b| 
// +------+---+ 
// |foobar|foo| 
// |foobar|bar| 
// +------+---+ 

veya expr/selectExpr:

df.selectExpr("a like CONCAT('%', b, '%')") 

Spark 1.5 yılında HiveContext gerektirecektir Hala ham SQL kullanabilirsiniz. Herhangi bir nedenle Hive bağlamı bir seçenek değilse, özel bir udf: