使用 hive SQL 提取不同字符之间的字符串

2023-12-08

我有一个名为 geo_data_display 的字段,其中包含国家/地区、地区和 DMA。这 3 个值包含在 = 和 & 字符之间 - 第一个“=”和第一个“&”之间的国家/地区、第二个“=”和第二个“&”之间的区域以及第三个“=”和第三个“”之间的 DMA &”。这是该表的可重复版本。国家/地区始终是字符,但区域和 DMA 可以是数字或字符,并且并非所有国家/地区都存在 DMA。

一些示例值是:

country=us&region=tx&dma=625&domain=abc.net&zipcodes=76549
country=us&region=ca&dma=803&domain=abc.com&zipcodes=90404 
country=tw&region=hsz&domain=hinet.net&zipcodes=300
country=jp&region=1&dma=a&domain=hinet.net&zipcodes=300  

我有一些示例 SQL,但 geo_dma 代码行根本不起作用,并且 geo_region 代码行仅适用于字符值

SELECT 

UPPER(REGEXP_REPLACE(split(geo_data_display, '\\&')[0], 'country=', '')) AS geo_country
,UPPER(split(split(geo_data_display, '\\&')[1],'\\=')[1]) AS geo_region
,split(split(cast(geo_data_display as int), '\\&')[2],'\\=')[2] AS geo_dma
FROM mytable

您可以使用str_to_map像这样:

select  geo_map['country']  as geo_country
       ,geo_map['region']   as geo_region
       ,geo_map['dma']      as geo_dma

from   (select  str_to_map(geo_data_display,'&','=')    as geo_map
        from    mytable
        ) t
;

+--------------+-------------+----------+
| geo_country  | geo_region  | geo_dma  |
+--------------+-------------+----------+
| us           | tx          | 625      |
| us           | ca          | 803      |
| tw           | hsz         | NULL     |
| jp           | 1           | a        |
+--------------+-------------+----------+
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 hive SQL 提取不同字符之间的字符串 的相关文章

  • Sqoop 导出分区的 Hive 表

    我在尝试导出分区的 Hive 表时遇到了一些问题 这是否完全受支持 我尝试用谷歌搜索并找到一张 JIRA 票证 sqoop export connect jdbc mysql localhost testdb table sales exp
  • 在 Hadoop MapReduce 中为二进制文件创建自定义 InputFormat 和 RecordReader

    我正在编写一个 M R 作业 该作业处理以二进制格式编写的大型时间序列数据文件 如下所示 此处换行以提高可读性 显然 实际数据是连续的 TIMESTAMP 1 TIMESTAMP 1 TIMESTAMP 2 TIMESTAMP 2 TIME
  • 在蜂巢中出现错误

    当我连接到 ireport 时 如果说在 hive shell 中显示表 则会出现此错误 元数据错误 java lang RuntimeException 无法实例化 org apache hadoop hive metastore Hiv
  • Hadoop-reducer 如何获取数据?

    据我所知 映射器为每个减速器生成 1 个分区 减速器如何知道要复制哪个分区 假设有 2 个节点运行用于字数统计程序的映射器 并且配置了 2 个缩减器 如果每个映射节点生成 2 个分区 并且两个节点中的分区都可能包含相同的单词作为键 那么减速
  • Mapreduce shuffle 阶段出现内存不足错误

    我在运行时遇到奇怪的错误类似字数统计映射缩减程序 我有一个包含 20 个从站的 hadoop 集群 每个从站都有 4 GB RAM 我将 Map 任务配置为 300MB 堆 Reduce 任务槽为 1GB 我每个节点有 2 个映射槽和 1
  • 如何有效地将数据从 Kafka 移动到 Impala 表?

    以下是当前流程的步骤 Flafka http blog cloudera com blog 2014 11 flafka apache flume meets apache kafka for event processing 将日志写入
  • 全部配对图表上的所有路径

    这可能是一个没有最佳解决方案的问题 假设我有一个有向图 不知道它是否有循环 循环检测将是这个问题的方面之一 给定一组顶点 可能是数百万个顶点 我需要计算给定图的所有唯一对之间的所有不同路径 没有重复顶点的路径 我该如何应对这种情况 让我们看
  • 如何对 RDD 进行分区

    我有一个文本文件 其中包含大量由空格分隔的随机浮动值 我正在将此文件加载到 scala 中的 RDD 中 这个RDD是如何分区的 另外 是否有任何方法可以生成自定义分区 以便所有分区都具有相同数量的元素以及每个分区的索引 val dRDD
  • 以不同用户身份运行 MapReduce 作业

    我有一个与 Hadoop 交互的 Web 应用程序 Cloudera cdh3u6 特定的用户操作应在集群中启动新的 MapReduce 作业 该集群不是一个安全集群 但它使用简单的组身份验证 因此 如果我以自己的身份通过 ssh 连接到它
  • 如何在Hadoop中序列化List集合对象?

    有没有办法在 Hadoop 中序列化 java 集合 The Writable接口仅适用于 Java 原语 我有以下类属性 private String keywords private List
  • 更改spark_temporary目录路径

    是否可以更改 temporarySpark在写入之前保存临时文件的目录 特别是 由于我正在编写表的单个分区 因此我希望临时文件夹位于分区文件夹内 是否可以 由于其实现原因 无法使用默认的 FileOutputCommiter FileOut
  • Spark引擎执行SQL时如何获取hive UDF中Spark的partitionId或taskContext?

    例如我们用Spark引擎执行下面的SQL 我们需要my udf row 返回 Spark 中的分区 id add jar hdfs dir udf udf jar create temporary function my udf as co
  • 以编程方式读取 Hadoop Mapreduce 程序的输出

    这可能是一个基本问题 但我在谷歌上找不到答案 我有一个映射缩减作业 它在其输出目录中创建多个输出文件 我的 Java 应用程序在远程 hadoop 集群上执行此作业 作业完成后 需要使用以下命令以编程方式读取输出org apache had
  • 是否可以通过编写单独的mapreduce程序并行执行Hive查询?

    我问了一些关于提高 Hive 查询性能的问题 一些答案与映射器和减速器的数量有关 我尝试使用多个映射器和减速器 但在执行中没有看到任何差异 不知道为什么 可能是我没有以正确的方式做 或者我错过了其他东西 我想知道是否可以并行执行 Hive
  • Spark/Yarn:HDFS 上不存在文件

    我在 AWS 上设置了 Hadoop Yarn 集群 有 1 个主服务器和 3 个从服务器 我已经验证我有 3 个活动节点在端口 50070 和 8088 上运行 我在客户端部署模式下测试了 Spark 作业 一切正常 当我尝试使用 Spa
  • Hadoop - 直接从 Mapper 写入 HBase

    我有一个 hadoop 作业 其输出应写入 HBase 我并不真正需要减速器 我想要插入的行类型是在映射器中确定的 如何使用 TableOutputFormat 来实现此目的 从所有示例中 我看到的假设是 reducer 是创建 Put 的
  • MapReduce 中的分区到底是如何工作的?

    我认为我总体上对 MapReduce 编程模型有一定的了解 但即使在阅读了原始论文和其他一些来源之后 我仍然不清楚许多细节 特别是关于中间结果的分区 我将快速总结到目前为止我对 MapReduce 的理解 我们有一个可能非常大的输入数据集
  • 没有函数映射到名称“coord:formatTime”

    我正在尝试使用 oozie 中的以下内容获取当前时间戳
  • MapReduce 中 1 个任务的减速器数量

    在典型的 MapReduce 设置 如 Hadoop 中 1 个任务使用多少个减速器 例如计算单词数 我对 Google MapReduce 的理解意味着只涉及 1 个减速器 那是对的吗 例如 单词计数会将输入分为 N 个块 并且 N 个
  • 使用 HttpClient 的 .NET Core SPNEGO 身份验证

    我目前正在编写一个简单的基于 NET Core 的客户端 用于通过 WebHCat 与 Hadoop 集群进行交互 并且我正在尝试弄清楚如何使用 SPNEGO 进行身份验证 就像在curl 或 Powershell Core 等中一样 使用

随机推荐