hive、hadoop面试题

hive、hadoop面试题有如下hive记录表records,记录车辆的过车信息:createtablerecords(idstring,//记录编号indatestring,//过车记录时间plate_nostring,//车辆号牌device_idint,//经过的设备编号)partitionedby(monthstring,daystring)rowformatdelimitedfieldsterminatedby’\t’storedasORC;1…

大家好,又见面了,我是你们的朋友全栈君。

有如下hive记录表records,记录车辆的过车信息:
create table records(
  id string, //记录编号
  indate string, //过车记录时间
  plate_no string, //车辆号牌
  device_id int, //经过的设备编号
)
partitioned by(month string,day string)
row format delimited fields terminated by ‘\t’ stored as ORC;

1请使用HQL得到最近一个月内晚上(晚22点-早6点)出现记录最多的车辆号牌Top10及次数
select
  plate_no,
  rank() over(sort by total desc) rk,
  total
from
  (
   select
   plate_no,
   count(1) total
   from
    (
     select
     indate,
     plate_no
     from
     records
     where
     From_unixtime(unix_timestamp(indate,”yyyy-MM-dd HH:mm:ss”),”yyyy-MM-dd”)>=date_sub(‘2020-04-26’,30)
     and
     From_unixtime(unix_timestamp(indate,”yyyy-MM-dd HH:mm:ss”),”yyyy-MM-dd”) <=’2020-04-26′
     and
     From_unixtime(unix_timestamp(indate,”yyyy-MM-dd HH:mm:ss”),”HH”) <=22
     and
     From_unixtime(unix_timestamp(indate,”yyyy-MM-dd HH:mm:ss”),”HH”) >=6
    )  t1
   group by plate_no
  ) t2
 where rk = 10

2请用spark RDD将上述表中indate、plate_no、device_id三个字段记录重复的数据只保留一条
object interview02 {

  def main(args: Array[String]): Unit = {

    val session: SparkSession = SparkSession.builder().master(“local[*]”).appName(“interview”).getOrCreate()
    val rdd: RDD[Row] = session.read.csv(“records”).rdd

    val distinct = rdd.map(row => ((“indate”,”plate_no”,”device_id”),(“id”)))
      .groupByKey()
    distinct.distinct().foreach(println)
    session.stop()
    }

}

3有string A和string B,分别由4096个随机的0或1组成,样例为String A = “01010111001….110010”,String B=”10101110….100101″,
现有公式double C=(A和B逐位与的和)/(A中1的个数*B中1的个数),请用自己熟悉的语言实现出满足此公式的方法。
public class Method {

    public static void main(String[] args) {

       

 String A = "0101010101101010";
        String B = "1010101010101011";

        char[] chars1 = A.toCharArray();
        char[] chars2 = B.toCharArray();
        int sum;
        Double sum2 = 0.0;
        int c = 0;
        int d = 0;
        for (int i = 0; i < chars1.length; i++) {
            char a = chars1[i];

//            for (int j= 0;j< chars2.length;j++){
            char b = chars2[i];


            sum = Integer.parseInt(String.valueOf(a)) & Integer.parseInt(String.valueOf(b));
            /* System.out.println(sum); */
            sum2 += sum;
        }
        for (int j = 0; j < chars1.length; j++) {
            char a = chars1[j];

            char b = chars2[j];
            if (Integer.parseInt(String.valueOf(a)) == 1) {

                c += 1;


            }
            if (Integer.parseInt(String.valueOf(b)) == 1) {

                d += 1;


            }



        }
        Double C = sum2/(c*d);
        System.out.println(sum2);
        System.out.println(c);
        System.out.println(d);
        System.out.println(C);

    }
}

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/149946.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java获取服务器文件路径,干货满满!

    java获取服务器文件路径,干货满满!一、SpringCloud微服务概念定义提起微服务,不得不提SpringCloud全家桶系列,SpringCloud是一个服务治理平台,是若干个框架的集合,提供了全套的分布式系统解决方案。包含了:服务注册与发现、配置中心、服务网关、智能路由、负载均衡、断路器、监控跟踪、分布式消息队列等等。SpringCloud通过SpringBoot风格的封装,屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、容易部署的分布式系统开发工具包。开发者可以快速的启动服务或构建应用、同时能够

    2022年7月11日
    43
  • 如何配置android的adb环境变量(jre环境变量配置)

    一、安装完AndroidStudio后会默认在其下面安装SDK1.找到文件sdk下的tools和platform-tools,并复制其路径2.打开环境变量配置3.新建系统变量,命名为Android_ADB,并将上述两个路径分别导入,中间用;隔开4.打开path变量,输入%Android_ADB%5.打开终端,输入adbversion,出现帮助信息,完成配置。二

    2022年4月9日
    40
  • Git 取消跟踪已版本控制的文件(亲测可行)

    Git 取消跟踪已版本控制的文件(亲测可行)

    2021年10月20日
    57
  • 离散傅里叶变换公式推导

    离散傅里叶变换公式推导离散傅里叶变换公式推导先抛变换公式:Fm=∑n=0N−1fne−2πimn/N↔fn=1N∑m=0N−1Fme2πimn/NF_m=\sum_{n=0}^{N-1}f_ne^{-2\piimn/N}\leftrightarrowf_n=\frac{1}{N}\sum_{m=0}^{N-1}F_me^{2\piimn/N}Fm​=n=0∑N−1​fn​e−2πimn/N↔fn​=N1​m=0∑N−1​Fm​e2πimn/N式中的N是数据点个数讲道理一开始完全看不懂公式这么来的,一顿百度后我学

    2022年7月17日
    21
  • MongoDB和Redis的区别是什么

    MongoDB和Redis的区别是什么

    2022年2月20日
    47
  • C语言链表详解_c语言中链表的使用

    C语言链表详解_c语言中链表的使用链表是一种常见的基础数据结构,结构体指针在这里得到了充分的利用。链表可以动态的进行存储分配,也就是说,链表是一个功能极为强大的数组,他可以在节点中定义多种数据类型,还可以根据需要随意增添,删除,插入节点。链表都有一个头指针,一般以head来表示,存放的是一个地址。链表中的节点分为两类,头结点和一般节点,头结点是没有数据域的。链表中每个节点都分为两部分,一个数据域,一个是指针域。说到这里你应该就明白…

    2022年10月21日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号