当前位置: 首页 > 面试题库 >

如何动态填充数据框的选择子句?给出AnalysisException

阎唯
2023-03-14
问题内容

我正在使用spark-sql 2.4.1和Java 8。

 val country_df = Seq(
    ("us",2001),
    ("fr",2002),
    ("jp",2002),
    ("in",2001),
    ("fr",2003),
    ("jp",2002),
    ("in",2003)
    ).toDF("country","data_yr")

> val col_df = country_df.select("country").where($"data_yr" === 2001)

    val data_df = Seq(
    ("us_state_1","fr_state_1" ,"in_state_1","jp_state_1"),
    ("us_state_2","fr_state_2" ,"in_state_2","jp_state_1"),
    ("us_state_3","fr_state_3" ,"in_state_3","jp_state_1")
    ).toDF("us","fr","in","jp")

> data_df.select("us","in").show()

如何从给定年份的country_df中动态填充(data_df的)select子句?

即从第一个数据帧,我将获得column的值,这些是我需要从第二个datafame中选择的列。如何才能做到这一点 ?

试过这个

List<String> aa = col_df.select(functions.lower(col("data_item_code"))).map(row -> row.mkString(" ",", "," "), Encoders.STRING()).collectAsList();
 data_df.select(aa.stream().map(s -> new Column(s)).toArray(Column[]::new));

错误:

.AnalysisException: cannot resolve '` un `' given input columns: [abc,.....all columns ...]

那么,这里有什么问题,以及如何解决?


问题答案:

您可以尝试以下代码。

从第一个数据集中选择列名称。

List<String> columns = country_df.select("country").where($"data_yr" === 2001).as(Encoders.STRING()).collectAsList();

在第二个数据集中的selectexpr中使用列名。

public static Seq<String> convertListToSeq(List<String> inputList) {
        return JavaConverters.asScalaIteratorConverter(inputList.iterator()).asScala().toSeq();
}


//using selectExpr
data_df.selectExpr(convertListToSeq(columns)).show(true);


 类似资料:
  • 本文向大家介绍jQGrid动态填充select下拉框的选项值(动态填充),包括了jQGrid动态填充select下拉框的选项值(动态填充)的使用技巧和注意事项,需要的朋友参考一下 本文给大家分享一段代码关于技巧jqgrid动态填充select 下拉框的选项值,非常不多说了,直接给大家贴代码了,具体代码如下所示: 注意:要return以及async:false否则没有效果 在colModel:中设置

  • 我有一个调查,有一堆问题,包括实际问题,一些是或否的单选按钮和一个评论框。我加了一张照片给你看。下面是填充问题后的html结构。 此信息通过web服务和jquery动态填充。看起来这些问题是动态填充的,每个问题都包含相同的类名、范围名等。有40多个问题被附加到div中。 我想做的是选择一个特定的问题并选中一个特定的单选按钮。然后,如果单击某个单选按钮,则会自动选中其他单选按钮。我相信Jquery是

  • 问题内容: 好的,这是我对Ajax的第一次尝试,它使我发疯,因为我实在无法绕开它。我想做的是在第一个框中用数据库中的客户填充,然后使用customerID通过select.php脚本从数据库中选择所有车辆ID。发生的情况是“客户”框被选中,但是选择客户时什么也没有发生。 这是我的Test.php文件: 这是我的select.php文件: 我正在尝试修改本教程以使用数据库,但到目前为止我没有成功。

  • 我需要滚动表来获取使用selenium和java绑定以及chrome驱动程序动态填充的表内容。这是另一个滚动,而不是窗口滚动本身。我能找到的所有可用的解决方案都是针对窗口滚动的。我在这里需要的是滚动桌子。我需要滚动突出显示的那个 我收到以下错误消息 错误消息:没有这样的元素:找不到元素:{“method”:“XPath”,“Selector”:“//*[@class='antiscroll-scr

  • 问题内容: 我的问题如下:我有几个文件,并创建了一个带有名称的下拉菜单,接下来我需要的是一个选项菜单,只要选择文件名以显示特定文件中的某些数据,就可以更改该菜单。需要明确的是,我的问题只是关于从下拉菜单中选择一个选项时如何更改选项菜单。感谢您的帮助。 问题答案: OptionMenu小部件不过是一个便利类,它创建与菜单关联的菜单按钮。您可以通过属性进入此菜单。唯一的技巧是知道菜单项应该做什么,这无

  • 问题内容: 我仍在学习Jquery,并且对自己手中的任务有些困惑。 看起来像一个简单的任务…我有一个框,想要在单击时填充“选项”。我不希望仅在有人真正要求查看列表时在页面加载时填充它。同样,它只需填充一次。我真的不希望有人每次扩大名单时都发出请求。 我想我的Select元素中可能会有一个函数调用 然后让一个Javascript getUsers()函数调用我的Json GetUsers()Acti