- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在尝试将 RDBMS 表提取到 Hive 中。我通过以下方式获得了数据框:
val yearDF = spark.read.format("jdbc").option("url", connectionUrl)
.option("dbtable", "(select * from schema.tablename where source_system_name='DB2' and period_year='2017') as year2017")
.option("user", devUserName)
.option("password", devPassword)
.option("numPartitions",15)
.load()
这些是数据框的列:
geography:string|
project:string|
reference_code:string
product_line:string
book_type:string
cc_region:string
cc_channel:string
cc_function:string
pl_market:string
ptd_balance:double
qtd_balance:double
ytd_balance:double
xx_last_update_tms:timestamp
xx_last_update_log_id:int
xx_data_hash_code:string
xx_data_hash_id:bigint
ptd_balance、qtd_balance、ytd_balance
列是 double 列的双数据类型。我们的项目希望通过创建新列将其数据类型从 Double 转换为 String:ptd_balance_text、qtd_balance_text、ytd_balance_text
使用相同的数据以避免任何数据截断。
withColumn
将在数据框中创建一个新列。withColumnRenamed
将重命名现有列。
数据框有近 1000 万条记录。有没有一种有效的方法可以创建多个与数据框中现有列具有相同数据和不同类型的新列?
最佳答案
如果我处在你的位置,我会更改提取查询或要求 BI 团队付出一些努力 :P 在提取时动态添加和转换字段,但无论如何你问的是可能的。
您可以从现有列中添加列,如下所示。检查 addColsTosampleDF
dataframe
。我希望下面的评论足以理解,如果您有任何问题,请随时在评论中添加,我会编辑我的答案。
scala> import org.apache.spark.sql.functions._
import org.apache.spark.sql.functions._
scala> import org.apache.spark.sql.{DataFrame, Row, SparkSession}
import org.apache.spark.sql.{DataFrame, Row, SparkSession}
scala> val ss = SparkSession.builder().appName("TEST").getOrCreate()
18/08/07 15:51:42 WARN SparkSession$Builder: Using an existing SparkSession; some configuration may not take effect.
ss: org.apache.spark.sql.SparkSession = org.apache.spark.sql.SparkSession@6de4071b
//Sample dataframe with int, double and string fields
scala> val sampleDf = Seq((100, 1.0, "row1"),(1,10.12,"col_float")).toDF("col1", "col2", "col3")
sampleDf: org.apache.spark.sql.DataFrame = [col1: int, col2: double ... 1 more field]
scala> sampleDf.printSchema
root
|-- col1: integer (nullable = false)
|-- col2: double (nullable = false)
|-- col3: string (nullable = true)
//Adding columns col1_string from col1 and col2_doubletostring from col2 with casting and alias
scala> val addColsTosampleDF = sampleDf.
select(sampleDf.col("col1"),
sampleDf.col("col2"),
sampleDf.col("col3"),
sampleDf.col("col1").cast("string").alias("col1_string"),
sampleDf.col("col2").cast("string").alias("col2_doubletostring"))
addColsTosampleDF: org.apache.spark.sql.DataFrame = [col1: int, col2: double ... 3 more fields]
//Schema with added columns
scala> addColsTosampleDF.printSchema
root
|-- col1: integer (nullable = false)
|-- col2: double (nullable = false)
|-- col3: string (nullable = true)
|-- col1_string: string (nullable = false)
|-- col2_doubletostring: string (nullable = false)
scala> addColsTosampleDF.show()
+----+-----+---------+-----------+-------------------+
|col1| col2| col3|col1_string|col2_doubletostring|
+----+-----+---------+-----------+-------------------+
| 100| 1.0| row1| 100| 1.0|
| 1|10.12|col_float| 1| 10.12|
+----+-----+---------+-----------+-------------------+
关于scala - 有没有办法从 Scala 中数据框的现有列创建多列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51729222/
我有两个具有不同格式的相似数据的数据框 df1: Nodo X Y Z CTB3901 CTBX3901 CTBY3901 CTBZ3901
这个问题在这里已经有了答案: Using tuples in SQL "IN" clause (9 个回答) 关闭 8 年前。 我尝试获得一些满足特定条件的用户: SELECT * FROM use
我目前正在使用 MySQL (5.7) 来查询成员表。 当我执行如下查询时: SELECT fname, lname, added FROM Members WHERE ((fname, lname)
我正在使用 CSS 创建多个列,以提供与 Pinterest 界面类似的外观(例如,框列,但整齐地堆叠在彼此之下)。 这是我使用的代码: #feed-post-home .feed { -mo
我正在使用 VLookup 函数来查找列中存在的多个值。这工作得很好,但只需要很多时间,因为我在 Excel 表中有 100,000 行。 有什么办法可以加快这段代码的速度吗? 该代码基本上在列中查找
如果这个词正确的话,我有 4 列和 4 个不同的参数。每个参数大约有 3-5 个变量。我想做的是在维护不同列的同时创建 4 个不同参数的所有可能组合。因此,假设我有以下示例: **Column A |
我正在尝试使用 arrange_()使用字符串输入并按降序排列在其中一列中。 library(dplyr) # R version 3.3.0 (2016-05-03) , dplyr_0.4.3 #
我只是想知道是否有可以包含多列的 wpf 组合框控件? 如果没有,我需要使用什么 XAML 来实现这一目标? 如果可能的话,我只是在寻找一个基本的两列组合框, 谢谢 最佳答案 请引用这些链接 多列组合
我想使用 Select 根据第二个表中的值更新表中的多个列语句来获取这样的值: UPDATE tbl1 SET (col1, col2, col3) = (SELECT colA, colB, col
如果我们需要根据给定列的某些值集查询表,我们可以简单地使用 IN 子句。 但是如果需要基于多列执行查询,我们不能使用 IN 子句(在 SO 线程中 grepped)。 从其他 SO 线程,我们可以使用
我需要用分隔值拆分表中两列的值。 我的源表如下所示: 产品IDean_upc已批准21029618710103368021;8710103368038;87101033680141;0;1929236
我正在尝试在 WPF 中创建一个包含多列的 TreeView 。我很清楚,关于这个主题确实有很多问题。但是,他们在绑定(bind)数据时似乎采用了不同的方法。每个人似乎都设置了 itemssource
我正在尝试使用以下数据在 Excel 中创建数据透视表: 我试图得出的最终结果(使用枢轴)是这样的摘要: 但是我不知道如何让 Excel 计算/添加/考虑所有列。我可以为每个单独的字段/列创建一个数据
我正在尝试在 WPF 中创建一个包含多列的 TreeView 。我很清楚,关于这个主题确实有很多问题。但是,他们在绑定(bind)数据时似乎采用了不同的方法。每个人似乎都设置了 itemssource
如何在最多几列的每行返回 1 个值: 表名 [Number, Date1, Date2, Date3, Cost] 我需要返回这样的东西: [Number, Most_Recent_Date, Cos
我有两个数据框想要连接在一起(自行车骑行数据框和自行车站数据框)。 我一直在使用 pandas 库,但我似乎无法编写代码来完美地操作连接。最初,我只是加入关键“station_id”,但我发现最近更新
我有以下 csv 文件,我想要内部联接 CSV 1:Trip_Data.csv (250MB) head -2 rand_trip_data_1.csv medallion,hack_license,
我知道以前也有人问过类似的问题。但是,我的问题略有不同。我正在尝试跨多个列获取 merge_asof 的功能。这是数据集: import pandas as pd left = pd.DataFram
我有一个数据库,里面保存着客户的数据。我需要知道我们在各个城市和国家有多少客户。我必须用单个查询来完成它。 我的表是客户,我有城市和国家列(均为varchar),其中包含有关它的信息。 所需的查询输出
我需要左连接两个表:Cardealers 和Applications。 我想查看哪些信用卡经销商收到了哪些申请。 每个申请都会转发给三个发卡商,因此我的表结构具有以下 3 列:receiver_1、r
我是一名优秀的程序员,十分优秀!