- 卷积神经网络学习笔记——ZFNet(Tensorflow实现)
- 24年3月使用VS22编译TelegramDesktop
- STM32中RFID模块(MFRC522)简单应用
- java反序列化-CC1
show tables;
show tables like 'u*';
desc t_person;
desc formatted students; // 更加详细
hdfs dfs -put '本地数据' 'hive表对应的HDFS目录下'
下列命令需要在hive shell里执行 。
create table IF NOT EXISTS students2
(
id bigint,
name string,
age int,
gender string,
clazz string
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';
// 将HDFS上的/input1目录下面的数据 移动至 students表对应的HDFS目录下,注意是 **移动、移动、移动**
load data inpath '/input1/students.txt' into table students;
// 清空表
truncate table students;
// 加上 local 关键字 可以将Linux本地目录下的文件 上传到 hive表对应HDFS 目录下 **原文件不会被删除,是复制,不是移动**
load data local inpath '/usr/local/soft/data/students.txt' into table students;
// overwrite 覆盖加载
load data local inpath '/usr/local/soft/data/students.txt' overwrite into table students;
create table IF NOT EXISTS students3
(
id bigint,
name string,
age int,
gender string,
clazz string
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';
// 将 students表的数据插入到students2 这是复制 不是移动 students表中的数据不会丢失
insert into table students2 select * from students;
// 覆盖插入 把into 换成 overwrite
insert overwrite table students2 select * from students;
查询表结构 。
desc students2;
添加列 。
alter table students2 add columns (education string);
查询表结构 。
desc students2;
更新列 。
alter table stduents2 change education educationnew string;
drop table students2;
面试题:内部表和外部表的区别?如何创建外部表?工作中使用外部表 。
当创建好表的时候,HDFS会在当前表所属的库中创建一个文件夹 。
当设置表路径的时候,如果直接指向一个已有的路径,可以直接去使用文件夹中的数据 。
当load数据的时候,就会将数据文件存放到表对应的文件夹中 。
而且数据一旦被load,就不能被修改 。
我们查询数据也是查询文件中的文件,这些数据最终都会存放到HDFS 。
当我们删除表的时候,表对应的文件夹会被删除,同时数据也会被删除 。
默认建表的类型就是内部表 。
// 内部表
create table students_internal
(
id bigint,
name string,
age int,
gender string,
clazz string
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
LOCATION '/input2';
hive> dfs -put /usr/local/soft/data/students.txt /input2/;
外部表说明 。
外部表因为是指定其他的hdfs路径的数据加载到表中来,所以hive会认为自己不完全独占这份数据 。
删除hive表的时候,数据仍然保存在hdfs中,不会删除.
删除外部表只会删除hive中的映射出来的数据表,以及存在MySQL中的数据的元数据信息.
// 外部表
create external table students_external
(
id bigint,
name string,
age int,
gender string,
clazz string
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
LOCATION '/hive_test/input3';
hive> dfs -put /usr/local/soft/data/students.txt /input3/;
删除表测试一下:
hive> drop table students_internal;
Moved: 'hdfs://master:9000/input2' to trash at: hdfs://master:9000/user/root/.Trash/Current
OK
Time taken: 0.474 seconds
hive> drop table students_external;
OK
Time taken: 0.09 seconds
hive>
一般在公司中,使用外部表多一点,因为数据可以需要被多个程序使用,避免误删,通常外部表会结合location一起使用 。
外部表还可以将其他数据源中的数据 映射到 hive中,比如说:hbase,ElasticSearch...... 。
设计外部表的初衷就是 让 表的元数据 与 数据 解耦 。
创建数据文件存放的目录 。
hdfs dfs -mkdir -p /bigdata/hive_test1/dept
hdfs dfs -mkdir -p /bigdata/hive_test1/emp
hdfs dfs -mkdir -p /bigdata/hive_test1/salgrade
CREATE EXTERNAL TABLE IF NOT EXISTS dept (
DEPTNO int,
DNAME string,
LOC string
) row format delimited fields terminated by ','
location '/hive_test/dept';
10,ACCOUNTING,NEW YORK
20,RESEARCH,DALLAS
30,SALES,CHICAGO
40,OPERATIONS,BOSTON
CREATE EXTERNAL TABLE IF NOT EXISTS emp (
EMPNO int,
ENAME string,
JOB string,
MGR int,
HIREDATE date,
SAL int,
COMM int,
DEPTNO int
) row format delimited fields terminated by ','
location '/hive_test/emp';
7369,SMITH,CLERK,7902,1980-12-17,800,null,20
7499,ALLEN,SALESMAN,7698,1981-02-20,1600,300,30
7521,WARD,SALESMAN,7698,1981-02-22,1250,500,30
7566,JONES,MANAGER,7839,1981-04-02,2975,null,20
7654,MARTIN,SALESMAN,7698,1981-09-28,1250,1400,30
7698,BLAKE,MANAGER,7839,1981-05-01,2850,null,30
7782,CLARK,MANAGER,7839,1981-06-09,2450,null,10
7788,SCOTT,ANALYST,7566,1987-07-13,3000,null,20
7839,KING,PRESIDENT,null,1981-11-17,5000,null,10
7844,TURNER,SALESMAN,7698,1981-09-08,1500,0,30
7876,ADAMS,CLERK,7788,1987-07-13,1100,null,20
7900,JAMES,CLERK,7698,1981-12-03,950,null,30
7902,FORD,ANALYST,7566,1981-12-03,3000,null,20
7934,MILLER,CLERK,7782,1982-01-23,1300,null,10
CREATE EXTERNAL TABLE IF NOT EXISTS salgrade (
GRADE int,
LOSAL int,
HISAL int
) row format delimited fields terminated by ','
location '/hive_test/salgrade';
1,700,1200
2,1201,1400
3,1401,2000
4,2001,3000
5,3001,9999
将表中的数据备份 。
//创建存放数据的目录
mkdir -p /usr/local/soft/bigdata
//导出查询结果的数据(导出到Node01上)
insert overwrite local directory '/usr/local/soft/bigdata/person_data' select * from t_person;
-- 创建存放数据的目录
mkdir -p /usr/local/soft/bigdata
-- 导出查询结果的数据
insert overwrite local directory '/usr/local/soft/bigdata/hive_test1/person'
ROW FORMAT DELIMITED fields terminated by ','
collection items terminated by '-'
map keys terminated by ':'
lines terminated by '\n'
select * from t_person;
insert overwrite local directory '/usr/local/soft/bigdata/hive_test1/stu'
ROW FORMAT DELIMITED fields terminated by ','
lines terminated by '\n'
select clazz,count(1) as count from students group by clazz;
将sql语句的查询结果输出到HDFS中时,在HDFS上是直接将该结果存放在指定的文件夹里.
-- 创建存放数据的目录
hdfs dfs -mkdir -p /bigdata/hive_test1/copy
-- 导出查询结果的数据
insert overwrite directory '/bigdata/copy2' ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' select * from students
// 创建存放数据的目录
hdfs dfs -mkdir -p /bigdata/person
// 使用HDFS命令拷贝文件到其他目录
hdfs dfs -cp /hive/warehouse/t_person/* /bigdata/person
将数据导出到HDFS中时,会在指定的文件目录下产生一个该数据的元数据文件信息_metadata和一个用于存放真实数据的文件夹 data,在该文件夹下面才是数据文件 。
//创建存放数据的目录
hdfs dfs -mkdir -p /bigdata/copy
//导出查询结果的数据
export table t_person to '/bigdata/copy';
删除表结构 。
drop table t_person;
恢复表结构和数据 。
import from '/bigdata;
注意:时间不同步,会导致导入导出失败 。
最后此篇关于数据仓库建模工具之一——Hive学习第四天的文章就讲到这里了,如果你想了解更多关于数据仓库建模工具之一——Hive学习第四天的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
Hortonworks 数据平台 HDP 3.0 有 spark 2.3 和 Hive 3.1,默认情况下 spark 2.3 应用程序(pyspark/spark-sql 等)使用 spark 数据
是否最好让一个软件仓库包含多个文件夹,这些文件夹映射到工作区中的不同路径。或者一个仓库中的多个文件夹映射到多个工作区,或多个仓库映射到多个工作区。 有人对此事有任何实用建议吗? 我还注意到,当我在仓库
Git 是分布式源代码控制系统,对吧。如何在没有集中存储库的情况下连接两个开发人员。 我们的团队使用 Github,如果两个开发人员想在同一个分支上工作,似乎需要将该分支推送到远程,然后他们才能访问它
Maven – 仓库 什么是 Maven 仓库? 在Maven 的术语中,仓库是一个位置(place),例如目录,可以存储所有的工程 jar 文件、library jar 文件、插件或任何其他的工
关闭。这个问题需要更多focused .它目前不接受答案。 想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post . 3年前关闭。 Improve this questi
我开始将 git 与我的 .git 目录以及网络根目录中的其他所有内容一起使用。进一步阅读后,这似乎是一种不好的做法。我现在将我的应用程序和系统文件夹放在网络根目录之外。我的网络根目录中唯一剩下的就是
有没有可能没有历史的 Git 仓库?例如,我有一个我工作的本地 Git 存储库,我想将最新版本推送到生产服务器。生产服务器上不应存储任何历史记录。我该怎么做? 最佳答案 你可以看到命令 git arc
Laravel 中的 Repositories 有什么优势?它似乎是从应用程序的业务逻辑中抽象出模型层。虽然这似乎只是让整个请求生命周期变得更加复杂,但收效甚微。 有人可以阐明 Laravel 存储库
我有一个本地 git 服务器在我的 NAS 上运行,我正在我的笔记本电脑和工作站上进行开发,所有这些都在我的本地网络中。所以,如果我想在一个新的空 repo 中开始一个项目,我会关注 this ans
我们正在使用 SVN 来存储 maven 依赖项(组织限制不能像现在那样使用 nexus 或 artifactory maven 存储库)。 SVN 在使用 https 协议(protocol)的网络
我想允许某人查看我在我的私有(private)存储库中所做的工作。我该怎么做? 我看了https://help.github.com/articles/making-a-private-reposit
我试图阻止同事在 git 中再次推送已删除的标签(因为它被错误地推送了一次)。 我知道如何在本地执行此操作以及如何将其推送到远程以及如何指示我的同事以正确的方式从他们的本地存储库中删除已删除的标签。
我已经使用 url 克隆了一个 friend 的 git repo git 克隆 https://github.com/user/repo_name.git 然后我创建了我的分支,提交并尝试将我的代码
我目前正在我的代理机构安排比赛。我想对开发人员可以使用的模块进行一些管理。 是否可以托管 Play 模块和 Maven 库的镜像存储库并将 play 配置为仅使用这些存储库? 我已阅读此内容 docu
我正在尝试在我的 readme.md 中嵌入图像用于在 GitHub 上显示。我以前在公共(public)存储库中没有遇到任何问题,格式如下: ![header image](https://raw.
我想访问公司内部Artifactory实例上自定义开发的Gradle插件。对于公司内部发生的每一个Gradle构建,我都希望如此。我是否缺少任何东西,或者建议的方法是在每个项目的每个Gradle构建之
我想保留我在 docker hub 帐户中使用的图像,同时保持对拉取图像的引用。就像你在 github 上 fork 一个项目一样。 目前我已经尝试过jwilder/nginx-proxy图片。现在我
Perforce 中是否有命令可以获取客户端从软件仓库映射到特定文件夹的信息? 示例: 我有仓库位置//depot/myfolder/somefile.java 我想知道哪些客户端将此位置映射到哪个路
我被指派为一个项目开发一项功能。在几周的时间里,我将花几天时间研究该功能。我将克隆中央仓库。然后我将在本地工作 3 周。在此过程中,我会多次将我的进度提交到我的 repo 协议(protocol)中。
我发现自己越来越喜欢将Rstudio与R markdown文件(.rmd)一起使用,并且我非常喜欢“编织HTML +发布到Rpubs”的便利与同事共享我的工作。不幸的是,发布的文件必须是公开可见的,而
我是一名优秀的程序员,十分优秀!