第一题:
select '{"id":1,"name":{"url":"http://xxx/yyy/zz/test.js"}}'
##1 获取 //xxx/yyy/zz/test.js中的 xxx和 js
##2 获取 ip地址中的第一组数字

#### method 1
select split(get_json_object('{"id":1,"@name":{"url":"/xxx/yyy/zz/test.test_2.js"}}','$.@name.url'),'/')[1] as test,
reverse(split(reverse(get_json_object('{"id":1,"name":{"url":"/xxx/yyy/zz/test.tes-t_2.js"}}','$.name.url')),'\\.')[0]) as test2,
split("12.13.14.15.16","\\.")[0] as ip_first_num;

#### method2
select regexp_extract(get_json_object('{"id":1,"@name":{@url":"/test.test_2.js"}}','$.`@name.url`'),'^/([^/]+)/') as test,
regexp_extract(get_json_object('{"id":1,"name":{"url":"/xxx/yyy/zz/test.tes-t_2.js"}}','$.name.url'),"([^\\.]+$)") as test2,
regexp_extract("12.13.14.15.16","([0-9]+)") as ip_first_num;

第二题:

日常工作中,我们常用elasticsearch来存储数据,如果想转移一部分生产上的es某索引到本地或测试环境中,如果使用 sparksql来怎么做?

使用 es官方提供的包,如 elasticsearch-spark-20_2.11xxx.jar 很方便使用 sql来操作 elasticsearch的索引。

######读取elasticsearch索引的数据,并存储为json

import org.elasticsearch.spark.sql
val df = spark.read.format("org.elasticsearch.spark.sql").option("es.nodes","localhost:9200").load("sparksql-test9")
df.write.json("file:///tmp/json")
执行完你会发现 /tmp/json 文件夹下有几个json文件,打开查看
你会发现{} 每一条记录都是doc

#####读取json数据写入到elasticsearch索引中去,测试环境中使用的是spark2.4 es6.8
val json=spark.read.json("tmp/json")
df.write.format("org.elasticsearch.spark.sql").option("es.resource","sparksql-test9/_doc").option("es.nodes","172.17.0.3:9200").mode("Append").save

spark.sql写出的 json文件不适合使curl bulk upload的方式
curl -H "Content-Type: application/json" -XPOST 'http://localhost:9200/sparksql-test10/_doc/_bulk?pretty' \
--data-binary @part-00000-82438c55-612b-48df-b710-4c896f2e66f3-c000.json

这种方式需要json中有元数据,如文档的id

sparksql 练习题两道的更多相关文章

  1. ACM/ICPC 之 两道dijkstra练习题(ZOJ1053(POJ1122)-ZOJ1053)

    两道较为典型的单源最短路径问题,采用dijkstra解法 本来是四道练习题,后来发现后面两道用dijkstra来解的话总觉得有点冗余了,因此暂且分成三篇博客(本篇以及后两篇). ZOJ1053(POJ ...

  2. ACM/ICPC 之 欧拉回路两道(POJ1300-POJ1386)

    两道有关欧拉回路的例题 POJ1300-Door Man //判定是否存在从某点到0点的欧拉回路 //Time:0Ms Memory:116K #include<iostream> #in ...

  3. ACM/ICPC 之 Floyd范例两道(POJ2570-POJ2263)

    两道以Floyd算法为解法的范例,第二题如果数据量较大,须采用其他解法 POJ2570-Fiber Network //经典的传递闭包问题,由于只有26个公司可以采用二进制存储 //Time:141M ...

  4. ACM/ICPC 之 SPFA范例两道(POJ3268-POJ3259)

    两道以SPFA算法求解的最短路问题,比较水,第二题需要掌握如何判断负权值回路. POJ3268-Silver Cow Party //计算正逆最短路径之和的最大值 //Time:32Ms Memory ...

  5. 两道二分coming~

    第一道:poj 1905Expanding Rods 题意:两道墙(距离L)之间架一根棒子,棒子受热会变长,弯曲,长度变化满足公式( s=(1+n*C)*L),求的是弯曲的高度h. 首先来看这个图: ...

  6. JAVA算法两道

    算法(JAVA)----两道小小课后题   LZ最近翻了翻JAVA版的数据结构与算法,无聊之下将书中的课后题一一给做了一遍,在此给出书中课后题的答案(非标准答案,是LZ的答案,猿友们可以贡献出自己更快 ...

  7. 两道面试题,带你解析Java类加载机制

    文章首发于[博客园-陈树义],点击跳转到原文<两道面试题,带你解析Java类加载机制> 在许多Java面试中,我们经常会看到关于Java类加载机制的考察,例如下面这道题: class Gr ...

  8. 【转】两道面试题,带你解析Java类加载机制(类初始化方法 和 对象初始化方法)

    本文转自 https://www.cnblogs.com/chanshuyi/p/the_java_class_load_mechamism.html 关键语句 我们只知道有一个构造方法,但实际上Ja ...

  9. leetcode简单题目两道(2)

    Problem Given an integer, write a function to determine if it is a power of three. Follow up: Could ...

随机推荐

  1. n!素因子p的幂 swjtuOJ 2090【数论】

    原文地址:http://blog.csdn.net/u012717411/article/details/47334969(感谢作者) 素因子分解写的非常好!数论一道好题:给以两个大整数n,s(n&l ...

  2. Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十一章:模板测试

    原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十一章:模板测试 代码工程地址: https://github.co ...

  3. KiCad 安装后没有元件怎么办?

    KiCad 安装后没有元件怎么办? 按以下步骤试试. 卸载 KiCad EDA. 按 Win+R 输入 %appdata%/kicad 进入 KiCad 的配置目录. 将里面的内容打包成一个 zip ...

  4. 在 Linux Mint 19 上安装 zsh 和设置小键盘一步到位

    在 Linux Mint 19 上安装 zsh 和设置小键盘 安装 zsh 并设置 zsh 为默认 shell 安装 sudo apt install zsh 设置 zsh 为默认 shell,注意没 ...

  5. iOS 内存管理arc

    http://www.tekuba.net/program/346/ ios自动释放池(autoreleasepool #import <Foundation/Foundation.h> ...

  6. 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛 M. Frequent Subsets Problem【状态压缩】

    2017 ACM-ICPC 亚洲区(南宁赛区)网络赛  M. Frequent Subsets Problem 题意:给定N和α还有M个U={1,2,3,...N}的子集,求子集X个数,X满足:X是U ...

  7. python生成器和各种推导式

    一. 生成器 本质就是迭代器. 一个一个的创建对象 创建生成器的方式: 1. 生成器函数 2. 通过生成器表达式来获取生成器 3. 类型转换(看不到) 二. 生成器函数 (重点) 生成器函数中包含 y ...

  8. 补充:css制作三角

    梯形图案看下面这段样式: .test{width:10px; height:10px; border:10px solid; border-color:#ff3300 #0000ff #339966 ...

  9. QQ 聊天机器人API

    QQ机器人是腾讯陆续推出的的人工智能聊天机器人的总称. 都说小Q妹妹聪明好学,我们能够教她说话.也能够请他帮忙查询邮编.手机号,或者解释成语.翻译成语,据说她还会查询手机号码归属地.应用科学计算器. ...

  10. PAN-OS 6.1 Open Source Software (OSS) Listing

    https://www.paloaltonetworks.com/documentation/oss-listings/oss-listings/pan-os-oss-listings/pan-os- ...