簡體   English   中英

Spark.sql:刪除列名上的表名

[英]Spark.sql : Remove table's name on columns name

當我查詢我的數據庫時:

spark.sql("SELECT * FROM MyBase")

我有“我的基地”。 在我所有專欄的名字前面。

我們可以簡單地避免這種情況嗎? 如果沒有,最好的刪除方法是什么?

例子:

df = spark.sql("SELECT name, price FROM MyBase")
df.show(2)

+-------------+--------------+
| mybase.name | mybase.price |
+-------------+--------------+
|    Jean     |     15.0     |
|    Phil     |     10.0     |
+-------------+--------------+

我只想將名稱和價格作為列名。

謝謝

嘗試通過刪除前綴名稱 upto 為您的dataframe提供一組新的列. . 這是一個適用於所有列的示例解決方案。

data = [(1,2,3), (11,22,33)]
df1 = spark.createDataFrame(data,['a.a','a.b','a.c'])
df1.show()
"""
+---+---+---+
|a.a|a.b|a.c|
+---+---+---+
|  1|  2|  3|
| 11| 22| 33|
+---+---+---+
"""


new_cols = [i[i.find('.')+1:] for i in df1.columns]
df2 = df1.toDF(*new_cols)
df2.show()
"""
+---+---+---+
|  a|  b|  c|
+---+---+---+
|  1|  2|  3|
| 11| 22| 33|
+---+---+---+
"""

看來您設置了選項

hive.resultset.use.unique.column.names=true

在您的蜂巢站點的某個地方。xml 或火花 session。 出於您的目的,它應該是false的。

data = [(1,2,3), (11,22,33)]
df1 = spark.createDataFrame(data,['a.a','a.b','a.c'])
cols = [x.split('.')[1] for x in df1.columns]
display(df1.toDF(*cols))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM