Apache-spark数据帧列名称不一致,为什么会发生这种情况?

时间:2015-07-16 23:55:02

标签: java apache-spark apache-spark-sql

在Apache-Spark站点上执行类似于sql-programming-guid的操作,我的Java bean类生成的列在区分大小写时不匹配。有些首字母大写,有些则没有一致性或模式。

我做的一些事情与指南的不同之处在于:

  • 私有成员被命名为“mName”,而不仅仅是“name”,他们的getter / setter是getName setName。
  • 我使用的数据类型是Integer,String和Timestamp。

所以,

  1. 通过反思,究竟是怎么得到这些名字的?它是否使用get / set函数名称并截断get和set部分?
  2. 有没有办法禁用区分大小写?
  3. 至于为什么我没有显示任何代码。这是为了工作,所以我想避免展示任何我不应该做的事情。

    - UPDATE -------------------------

    因此看起来名称基于get和set函数。将set / getStartTime更改为set / getStartTimee会导致startTime成为startTimee。但是我仍然得到这样的情况:我有一个用于get / setITrN的列ITrN,它保留了大写的第一个字母,但是像startTime这样的列没有。

    - 更新#2 -------------------------

    在玩了这些名字之后,看起来决定因素就是Spark认为名字是首字母缩略词(全部大写),单词或单个字母。如果它以一个单词或一个字母开头,它会使它成为小写。作为一种解决方法,我刚用“_”开始了所有事情。无论如何...如果有人知道如何在查询时禁用区分大小写,请告诉我。

1 个答案:

答案 0 :(得分:2)

基于我所抛出的内容,首字母大写的名字只有在没有另一个大写字母后面的情况下才会成为小写字母。因此,MMark保持着MMark,而Mark则将其标记为结果。我猜这是为了解释在创建get / set方法时遇到的驼峰情况,其中一个想要拥有'name'变量的人将其写为setName,并将getName作为一种提高camel case可读性的方法。