首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将列添加到星点数据集并转换数据

将列添加到星点数据集并转换数据
EN

Stack Overflow用户
提问于 2017-04-10 12:27:42
回答 2查看 2.8K关注 0票数 1

我正在以火花数据集的形式加载一个拼花文件。我可以从查询中查询和创建新的数据集。现在,我想向dataset ("hashkey")添加一个新列并生成值(例如md5sum(nameValue))。我怎样才能做到这一点?

代码语言:javascript
复制
public static void main(String[] args) {

    SparkConf sparkConf = new SparkConf();

    sparkConf.setAppName("Hello Spark");
    sparkConf.setMaster("local");

    SparkSession spark = SparkSession.builder().appName("Java Spark SQL basic example")
            .config("spark.master", "local").config("spark.sql.warehouse.dir", "file:///C:\\spark_warehouse")
            .getOrCreate();

    Dataset<org.apache.spark.sql.Row> df = spark.read().parquet("meetup.parquet");
    df.show();

    df.createOrReplaceTempView("tmpview");

    Dataset<Row> namesDF = spark.sql("SELECT * FROM tmpview where name like 'Spark-%'");

    namesDF.show();

}

输出如下所示:

代码语言:javascript
复制
+-------------+-----------+-----+---------+--------------------+
|         name|meetup_date|going|organizer|              topics|
+-------------+-----------+-----+---------+--------------------+
|    Spark-H20| 2016-01-01|   50|airisdata|[h2o, repeated sh...|
|   Spark-Avro| 2016-01-02|   60|airisdata|    [avro, usecases]|
|Spark-Parquet| 2016-01-03|   70|airisdata| [parquet, usecases]|
+-------------+-----------+-----+---------+--------------------+
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-04-10 12:40:45

只需在查询中为MD5添加spark函数即可。

代码语言:javascript
复制
Dataset<Row> namesDF = spark.sql("SELECT *, md5(name) as modified_name FROM tmpview where name like 'Spark-%'");
票数 1
EN

Stack Overflow用户

发布于 2018-02-08 13:01:33

代码语言:javascript
复制
Dataset<Row> ds = sqlContext.read()
    .format("com.databricks.spark.csv")
    .option("inferSchema", "true")
    .option("header", "true")
    .option("delimiter","|")
    .load("/home/cloudera/Desktop/data.csv");
ds.printSchema();

将打印如下:

代码语言:javascript
复制
root
 |-- ReferenceValueSet_Id: integer (nullable = true)
 |-- ReferenceValueSet_Name: string (nullable = true)
 |-- Code_Description: string (nullable = true)
 |-- Code_Type: string (nullable = true)
 |-- Code: string (nullable = true)
 |-- CURR_FLAG: string (nullable = true)
 |-- REC_CREATE_DATE: timestamp (nullable = true)
 |-- REC_UPDATE_DATE: timestamp (nullable = true)

Dataset<Row> df1 = ds.withColumn("Key", functions.lit(1));
        df1.printSchema();

在添加上述代码后,它将添加一个具有常量值的列。

代码语言:javascript
复制
root
 |-- ReferenceValueSet_Id: integer (nullable = true)
 |-- ReferenceValueSet_Name: string (nullable = true)
 |-- Code_Description: string (nullable = true)
 |-- Code_Type: string (nullable = true)
 |-- Code: string (nullable = true)
 |-- CURR_FLAG: string (nullable = true)
 |-- REC_CREATE_DATE: timestamp (nullable = true)
 |-- REC_UPDATE_DATE: timestamp (nullable = true)
 |-- Key: integer (nullable = true)

可以看到将具有名称键的列添加到dataset中。

如果您想要添加某些列替代常数值,可以使用下面的代码来添加它。

代码语言:javascript
复制
Dataset<Row> df1 = ds.withColumn("Key", functions.lit(ds.col("Code")));
        df1.printSchema();
        df1.show();

现在,它将把watever的值打印到列代码中。进入名为Key的新列中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43323158

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档