zoukankan      html  css  js  c++  java
  • sparksql 练习题两道

    第一题:
    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

  • 相关阅读:
    动态规划算法-3
    动态规划算法-2
    动态规划算法-1
    滑动窗口算法-3
    央行副行长提示金融风险:地方偿债高峰期到来
    银行卡换“芯” 更要银行换心
    破解IT运维成本困境,专业化分工是妙方
    php连接mysql
    ajax原生验证用户名是否存在
    ajax跨域问题
  • 原文地址:https://www.cnblogs.com/huaxiaoyao/p/12104675.html
Copyright © 2011-2022 走看看