开发者社区 > 大数据与机器学习 > 大数据计算 MaxCompute > 正文

大数据计算MaxCompute正常spark那些他应该变成:123::456才对吗?

大数据计算MaxCompute正常spark那些他应该变成:123::456才对?774ee28c59acce38cbc46a096cfd89d6.png
d6bc91ab60b291cd666df2275a1f2948.png

展开
收起
真的很搞笑 2023-12-03 19:32:28 40 0
3 条回答
写回答
取消 提交回答
  • 在MaxCompute中,如果你想让Spark的行为更接近Hive,你可以设置odps.sql.hive.compatible为TRUE。然后,你可以使用CONCAT_WS函数来连接字符串,其中null值将被忽略。

    你的查询应该修改为:

    SET odps.sql.hive.compatible=TRUE;
    SELECT CONCAT_WS(':', '123', NULL, '456') AS test;
    

    这将返回一个结果,其中包含三个字段的值,即'123:NULL:456'。注意,NULL值被忽略了,而不是被视为空白。

    2023-12-04 16:50:11
    赞同 展开评论 打赏
  • spark-sql> select concat_ws(':','avg',null,'34');
    avg:34
    Time taken: 0.101 seconds, Fetched 1 row(s)
    9d5ca3d34ffb6c9b001ae4d058953a9b.png
    这个函数会忽略参数为null的值,但不会忽略空字符串。 ,此回答整理自钉群“MaxCompute开发者社区2群”

    2023-12-04 00:38:59
    赞同 展开评论 打赏
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    在MaxCompute中,数据类型是按照列存储的,而不是按照行存储的。因此,如果您想将一个字符串类型的值转换为数字类型,需要使用相应的转换函数。例如,如果您想将字符串"123::456"转换为数字类型,可以使用如下代码:

    from pyspark.sql import SparkSession
    
    # 创建SparkSession对象
    spark = SparkSession.builder.appName("example").getOrCreate()
    
    # 读取数据
    data = spark.read.text("path/to/your/data")
    
    # 定义转换函数
    def convert_string_to_number(value):
        return int(value.split(':')[1])
    
    # 应用转换函数并显示结果
    result = data.selectExpr("convert_string_to_number(value) as number").show()
    

    在这个例子中,我们首先创建了一个SparkSession对象,然后使用read.text方法读取了文本文件中的数据。接下来,我们定义了一个名为convert_string_to_number的转换函数,该函数接受一个字符串参数并将其转换为数字类型。最后,我们使用selectExpr方法应用了转换函数,并将结果打印出来。

    2023-12-03 21:42:27
    赞同 展开评论 打赏

MaxCompute(原ODPS)是一项面向分析的大数据计算服务,它以Serverless架构提供快速、全托管的在线数据仓库服务,消除传统数据平台在资源扩展性和弹性方面的限制,最小化用户运维投入,使您经济并高效的分析处理海量数据。

相关产品

  • 云原生大数据计算服务 MaxCompute
  • 热门讨论

    热门文章

    相关电子书

    更多
    Hybrid Cloud and Apache Spark 立即下载
    Scalable Deep Learning on Spark 立即下载
    Comparison of Spark SQL with Hive 立即下载