map
является элементарным преобразованием, а transform
является преобразованием RDD
map (func): возвращает новый DStream путем прохождения каждый элемент источника DStream через функцию func.
blockquote>Вот пример, который демонстрирует операцию отображения и преобразования в DStream
val conf = new SparkConf().setMaster("local[*]").setAppName("StreamingTransformExample") val ssc = new StreamingContext(conf, Seconds(5)) val rdd1 = ssc.sparkContext.parallelize(Array(1,2,3)) val rdd2 = ssc.sparkContext.parallelize(Array(4,5,6)) val rddQueue = new Queue[RDD[Int]] rddQueue.enqueue(rdd1) rddQueue.enqueue(rdd2) val numsDStream = ssc.queueStream(rddQueue, true) val plusOneDStream = numsDStream.map(x => x+1) plusOneDStream.print()
в
map
добавляет 1 к каждому элементу во всех RDD в DStream, дает результат, как показано ниже------------------------------------------- Time: 1501135220000 ms ------------------------------------------- 2 3 4 ------------------------------------------- Time: 1501135225000 ms ------------------------------------------- 5 6 7 -------------------------------------------
transform
transform (func): Return новый DStream, применяя функцию RDD-to-RDD к каждому RDD исходного DStream. Это может быть использовано для выполнения произвольных операций RDD в DStream.
blockquote>val commonRdd = ssc.sparkContext.parallelize(Array(0)) val combinedDStream = numsDStream.transform(rdd=>(rdd.union(commonRdd))) combinedDStream.print()
transform позволяет выполнять RDD-операцию, такую как объединение, объединение и т. Д. На RDD внутри DStream, приведенный здесь примерный код будет выдавать выходной сигнал ниже
------------------------------------------- Time: 1501135490000 ms ------------------------------------------- 1 2 3 0 ------------------------------------------- Time: 1501135495000 ms ------------------------------------------- 4 5 6 0 ------------------------------------------- Time: 1501135500000 ms ------------------------------------------- 0 ------------------------------------------- Time: 1501135505000 ms ------------------------------------------- 0 -------------------------------------------
, здесь
commonRdd
, который содержит элемент0
, выполняется операция объединения со всеми лежащими в основе RDD в DStream.
Я полагаю, что Вы, возможно, должны были бы добавить псевдоним к BillingContact для разрешения, Вы получаете доступ к, он - Адрес.
Что-то как:
var criteria = DetachedCriteria.For<Order>()
.CreateAlias("BillingContact", "bc")
.SetFetchMode("BillingContact", FetchMode.Eager)
.SetFetchMode("bc.Address", FetchMode.Eager)