Как добавить столбец из фрейма данных в другой блок данных в Scala? [Дубликат]

Я просто возился с этой проблемой снова в проекте MVC.Net. Если вы хотите вызывать методы async из PartialView, вам не разрешается выполнять асинхронную процедуру PartialView. Вы получите исключение, если вы это сделаете.

Итак, в основном простой способ обхода в сценарий, в котором вы хотите вызвать метод async из метода синхронизации, вы можете сделать следующее:

  1. перед вызовом, очистите SynchronizationContext
  2. , выполните здесь тупик, подождите, пока он закончит
  3. восстановить SynchronizationContext

Пример:

    public ActionResult DisplayUserInfo(string userName)
    {
        // trick to prevent deadlocks of calling async method 
        // and waiting for on a sync UI thread.
        var syncContext = SynchronizationContext.Current;
        SynchronizationContext.SetSynchronizationContext(null);

        //  this is the async call, wait for the result (!)
        var model = _asyncService.GetUserInfo(Username).Result;

        // restore the context
        SynchronizationContext.SetSynchronizationContext(syncContext);

        return PartialView("_UserInfo", model);
    }
1
задан Shankar Koirala 9 April 2018 в 18:14
поделиться

1 ответ

monotonically_increasing_id() является , увеличивая и уникальным , но не последовательным .

Вы можете использовать zipWithIndex путем преобразования к rdd и восстановлению Dataframe с той же схемой для обоих dataframe.

import spark.implicits._


val df1 = Seq(
  ("karti", "9685684551", 24),
  ("raja", "8595456552", 22)
).toDF("Customer_name", "Customer_phone", "Customer_age")


val df2 = Seq(
  ("watch", 1),
  ("cattoy", 2)
).toDF("Order_name", "Order_ID")

val df11 = spark.sqlContext.createDataFrame(
  df1.rdd.zipWithIndex.map {
    case (row, index) => Row.fromSeq(row.toSeq :+ index)
  },
  // Create schema for index column
  StructType(df1.schema.fields :+ StructField("index", LongType, false))
)


val df22 = spark.sqlContext.createDataFrame(
  df2.rdd.zipWithIndex.map {
    case (row, index) => Row.fromSeq(row.toSeq :+ index)
  },
  // Create schema for index column
  StructType(df2.schema.fields :+ StructField("index", LongType, false))
)

Теперь соедините конечные кадры данных

df11.join(df22, Seq("index")).drop("index")

Выход:

+-------------+--------------+------------+----------+--------+
|Customer_name|Customer_phone|Customer_age|Order_name|Order_ID|
+-------------+--------------+------------+----------+--------+
|karti        |9685684551    |24          |watch     |1       |
|raja         |8595456552    |22          |cattoy    |2       |
+-------------+--------------+------------+----------+--------+
0
ответ дан Shaido 15 August 2018 в 21:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: