从HDFS拷贝一个表到系统目录生成CSV

本文详细介绍了如何使用Hive管理文本表、查看表在HDFS的存储位置、统计表记录数及将数据导出至本地目录的过程,并通过实际操作演示了Hive与本地文件系统的交互。

1.首先建立一个文本表(text表),默认create table xx as select * from xxx ;  就生成了xx文本表。

   这里s1_date 是已经建好的文本表,不再累述。

2. 查看文本表s1_date在hdfs存储的位置。

[slave20:21000] > describe formatted s1_date;
Query: describe formatted s1_date
+---------------------------------+------------------------------------------------------------+----------------------+
| name                            | type                                                       | comment              |
+---------------------------------+------------------------------------------------------------+----------------------+
| # col_name                      | data_type                                                  | comment              |
|                                 | NULL                                                       | NULL                 |
| eci                             | int                                                        | NULL                 |
| s1_cnt_erabcreate_req           | bigint                                                     | NULL                 |
| s1_cnt_erabcreate_succ          | bigint                                                     | NULL                 |
| s1_cnt_hoout_req                | bigint                                                     | NULL                 |
| s1_cnt_hoout_succ               | bigint                                                     | NULL                 |
| s1_cnt_erabrelease_req          | bigint                                                     | NULL                 |
| s1_cnt_uerelease                | bigint                                                     | NULL                 |
| s1_cnt_uerelease_abnormal       | bigint                                                     | NULL                 |
| user_cnt_tcp_downretrans        | bigint                                                     | NULL                 |
| user_octet_up                   | bigint                                                     | NULL                 |
| user_octet_down                 | bigint                                                     | NULL                 |
| user_totaldelay_http_page30     | bigint                                                     | NULL                 |
| user_totaloctet_http_page30     | bigint                                                     | NULL                 |
| user_totaldelay_http_pageless30 | bigint                                                     | NULL                 |
| user_cnt_http_pageless30        | bigint                                                     | NULL                 |
| user_totaloctet_http_page500    | bigint                                                     | NULL                 |
| user_totaldelay_http_page500    | bigint                                                     | NULL                 |
| user_totaloctet_http_page2      | bigint                                                     | NULL                 |
| user_totaldelay_http_page2      | bigint                                                     | NULL                 |
| user_cnt_tcp_upretrans          | bigint                                                     | NULL                 |
|                                 | NULL                                                       | NULL                 |
| # Detailed Table Information    | NULL                                                       | NULL                 |
| Database:                       | mobile                                                     | NULL                 |
| Owner:                          | impala                                                     | NULL                 |
| CreateTime:                     | Tue Dec 29 21:30:40 CST 2015                               | NULL                 |
| LastAccessTime:                 | UNKNOWN                                                    | NULL                 |
| Protect Mode:                   | None                                                       | NULL                 |
| Retention:                      | 0                                                          | NULL                 |
| Location:                       | hdfs://myha/user/hive/warehouse/mobile.db/s1_date          | NULL                 |
| Table Type:                     | MANAGED_TABLE                                              | NULL                 |
| Table Parameters:               | NULL                                                       | NULL                 |
|                                 | transient_lastDdlTime                                      | 1451395840           |
|                                 | NULL                                                       | NULL                 |
| # Storage Information           | NULL                                                       | NULL                 |
| SerDe Library:                  | org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe         | NULL                 |
| InputFormat:                    | org.apache.hadoop.mapred.TextInputFormat                   | NULL                 |
| OutputFormat:                   | org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat | NULL                 |
| Compressed:                     | No                                                         | NULL                 |
| Num Buckets:                    | 0                                                          | NULL                 |
| Bucket Columns:                 | []                                                         | NULL                 |
| Sort Columns:                   | []                                                         | NULL                 |
+---------------------------------+------------------------------------------------------------+----------------------+
Fetched 43 row(s) in 0.15s


3. 回到master节点,查看该路径下有多少个文件,是否正确。

[slave20:21000] > exit;
[root@MASTER01~]# hadoop fs -ls /user/hive/warehouse/mobile.db/s1_date/
Found 48 items
drwxrwxrwx   - impala supergroup          0 2015-12-29 21:31 /user/hive/warehouse/mobile.db/s1_date/.impala_insert_staging
-rw-r--r--   2 impala supergroup      28040 2015-12-29 21:31 /user/hive/warehouse/mobile.db/s1_date/cc4fd90699199b86-7baa2858d61b53a3_1538064594_data.0.
-rw-r--r--   2 impala supergroup      27948 2015-12-29 21:31 /user/hive/warehouse/mobile.db/s1_date/cc4fd90699199b86-7baa2858d61b53a4_1769399956_data.0.
-rw-r--r--   2 impala supergroup      26547 2015-12-29 21:31 /user/hive/warehouse/mobile.db/s1_date/cc4fd90699199b86-7baa2858d61b53a5_376761693_data.0.
-rw-r--r--   2 impala supergroup      27712 2015-12-29 21:31 /user/hive/warehouse/mobile.db/s1_date/cc4fd90699199b86-7baa2858d61b53a6_748289471_data.0.
-rw-r--r--   2 impala supergroup      26024 2015-12-29 21:31 /user/hive/warehouse/mobile.db/s1_date/cc4fd90699199b86-7baa2858d61b53a7_376761693_data.0.
-rw-r--r--   2 impala supergroup      25695 2015-12-29 21:31 /user/hive/warehouse/mobile.db/s1_date/cc4fd90699199b86-7baa2858d61b53a8_2090998726_data.0.
-rw-r--r--   2 impala supergroup      27486 2015-12-29 21:31 /user/hive/warehouse/mobile.db/s1_date/cc4fd90699199b86-7baa2858d61b53a9_1028851036_data.0.
-rw-r--r--   2 impala supergroup      26543 2015-12-29 21:31 /user/hive/warehouse/mobile.db/s1_date/cc4fd90699199b86-7baa2858d61b53aa_1410957694_data.0.
-rw-r--r--   2 impala supergroup      29005 2015-12-29 21:31 /user/hive/warehouse/mobile.db/s1_date/cc4fd90699199b86-7baa2858d61b53ab_1984115561_data.0.
-rw-r--r--   2 impala supergroup      23728 2015-12-29 21:31 /user/hive/warehouse/mobile.db/s1_date/cc4fd90699199b86-7baa2858d61b53ac_1346909925_data.0.

4.查看该表的记录条数

[root@MASTER01 ~]# impala-shell -i slave30
Starting Impala Shell without Kerberos authentication
Connected to slave30:21000
Server version: impalad version 2.0.1-cdh5 RELEASE (build cc09df07d93c79351052eef2f4e5baf52373dc33)
Welcome to the Impala shell. Press TAB twice to see a list of available commands.

Copyright (c) 2012 Cloudera, Inc. All rights reserved.

(Shell build version: Impala Shell v2.0.1-cdh5 (cc09df0) built on Wed Nov 19 10:57:34 PST 2014) 
[slave30:21000] > use mobile;
Query: use mobile
[slave30:21000] > select count(*) from s1_date;
Query: select count(*) from s1_date
+----------+
| count(*) |
+----------+
| 9226     |


5.在本地建个s1_date 目录,并进入目录

[root@MASTER01 ~]# mkdir s1_date;
 
[root@MASTER01 ~]# cd s1_date/
[root@MASTER01 s1_date]# ls

6.从HDFS拷贝到本地目录 s1_date

[root@MASTER01 s1_date]# hadoop fs -copyToLocal /user/hive/warehouse/mobile.db/s1_date/* .
[root@MASTER01 s1_date]# pwd
/root/s1_date
[root@MASTER01 s1_date]# ls
cc4fd90699199b86-7baa2858d61b53a3_1538064594_data.0.  cc4fd90699199b86-7baa2858d61b53b3_533285813_data.0.   cc4fd90699199b86-7baa2858d61b53c3_1880186907_data.0.
cc4fd90699199b86-7baa2858d61b53a4_1769399956_data.0.  cc4fd90699199b86-7baa2858d61b53b4_781871636_data.0.   cc4fd90699199b86-7baa2858d61b53c4_1108168201_data.0.
cc4fd90699199b86-7baa2858d61b53a5_376761693_data.0.   cc4fd90699199b86-7baa2858d61b53b5_1226722329_data.0.  cc4fd90699199b86-7baa2858d61b53c5_1865579449_data.0.
cc4fd90699199b86-7baa2858d61b53a6_748289471_data.0.   cc4fd90699199b86-7baa2858d61b53b6_1892136031_data.0.  cc4fd90699199b86-7baa2858d61b53c6_568737959_data.0.
cc4fd90699199b86-7baa2858d61b53a7_376761693_data.0.   cc4fd90699199b86-7baa2858d61b53b7_1139362409_data.0.  cc4fd90699199b86-7baa2858d61b53c7_491335232_data.0.
cc4fd90699199b86-7baa2858d61b53a8_2090998726_data.0.  cc4fd90699199b86-7baa2858d61b53b8_969914465_data.0.   cc4fd90699199b86-7baa2858d61b53c8_1413328270_data.0.
cc4fd90699199b86-7baa2858d61b53a9_1028851036_data.0.  cc4fd90699199b86-7baa2858d61b53b9_419715216_data.0.   cc4fd90699199b86-7baa2858d61b53c9_855410744_data.0.


7.查看拷贝出来的文件个数 ,是否与表条数相同

[root@MASTER01 s1_date]# cat * |wc -l
9226

8.把所有数据放入csv中,下载即可(如果分隔符不对,需要重新替换分隔符,才能正常打开)

[root@MASTER01 s1_date]# cat *  > s1_date.csv
[root@MASTER01 s1_date]# cat s1_date.csv |wc -l
9226
[root@MASTER01 s1_date]# sz s1_date.csv 
*B00000000000000


查看,分隔符。
重新保存,用csv打开

<think>好的,我现在需要解决用户关于HDFS命令的问题,特别是hdfs dfs -scp的使用方法和可能的报错处理。首先,我要回忆一下HDFS的常用命令,尤其是涉及文件操作的。根据用户提供的引用内容,引用[3]中提到了HDFS常见的shell操作,比如-ls、-put、-cat、-get、-mkdir、-rm等,但没有提到-scp这个命令。这可能意味着-scp并不是HDFS的标准命令,或者用户可能记错了命令名称。 接下来,我需要确认HDFS中是否存在-scp命令。根据我的知识,HDFS通常使用hdfs dfs -cp来进行文件复制,而-scp可能混淆了HDFS的cp命令和Linux系统的scp命令。Linux的scp用于在本地和远程服务器之间传输文件,而HDFS有自己的文件系统操作命令。因此,用户可能误将两者结合,导致命令错误。 然后,我应该检查用户提供的引用内容是否有提到相关命令。引用[3]中提到了hdfs dfs -cp的使用,比如复制文件或目录,但没有提到-scp。引用[1]和[2]也强调了HDFS shell命令的结构,但没有涉及-scp。因此,可以确定hdfs dfs -scp不是一个有效的命令,用户可能想要使用其他命令来实现类似的功能,比如hdfs dfs -cp或hadoop distcp。 接下来,我需要考虑用户可能的意图。用户可能希望在不同的HDFS集群之间复制文件,或者从本地系统复制到HDFS。如果是跨集群复制,可能需要使用distcp工具;如果是本地到HDFS,则使用-put或-get命令。例如,hdfs dfs -put用于上传本地文件HDFS,而hdfs dfs -get用于下载HDFS文件到本地,这类似于scp的功能,但属于不同的命令。 关于报错处理,如果用户错误地输入了hdfs dfs -scp,系统会返回命令不存在的错误。此时需要检查命令的正确性,并建议使用正确的命令替代。此外,可能需要检查HDFS的配置和网络连接,如引用[5]提到的网络配置是否正确,确保HDFS服务正常运行。 最后,我需要整理这些信息,以清晰的结构回答用户的问题,指出-scp命令不存在,并推荐替代命令,同时提供示例和常见错误解决方法。还要确保按照用户的要求,使用中文回答,正确应用LaTeX格式,并生成相关问题。</think>在HDFS中,**`hdfs dfs -scp`并不是有效的命令**,您可能是混淆了Linux系统的`scp`命令和HDFS操作命令。以下是相关解析和替代方案: --- ### 一、命令解析 1. **HDFS原生文件传输命令** - **上传文件HDFS**:使用`-put` ```bash hdfs dfs -put <本地文件路径> <HDFS目标路径> # 示例:上传本地文件到根目录 hdfs dfs -put /home/user/file.txt / ```[^3] - **从HDFS下载文件**:使用`-get` ```bash hdfs dfs -get <HDFS文件路径> <本地目标路径> # 示例:下载根目录文件到本地 hdfs dfs -get /file.txt /home/user/ ```[^3] 2. **跨集群文件复制** 若需在**不同HDFS集群间传输数据**,应使用`distcp`工具(分布式拷贝): ```bash hadoop distcp hdfs://源集群地址/path hdfs://目标集群地址/path # 示例:跨集群复制文件夹 hadoop distcp hdfs://namenode1:8020/data hdfs://namenode2:8020/backup ``` --- ### 二、报错处理 若尝试执行`hdfs dfs -scp`会报错**`No such file or directory`**或**`Invalid command`**,解决方法如下: 1. **检查命令拼写** 确认命令格式正确,例如使用`-cp`代替`-scp`进行HDFS内部文件复制: ```bash hdfs dfs -cp <源路径> <目标路径> # 示例:复制HDFS文件到新路径 hdfs dfs -cp /file.txt /backup/file.txt ```[^3] 2. **检查网络和权限** - 跨集群操作需确保**网络互通**(参考引用[5]中虚拟网络配置)[^5] - 使用`hdfs dfs -ls`验证路径是否存在[^4] --- ### 三、替代方案对比 | 场景 | 正确命令 | 功能说明 | |--------------------|-----------------------|--------------------------| | 本地→HDFS | `hdfs dfs -put` | 上传本地文件HDFS | | HDFS→本地 | `hdfs dfs -get` | 下载HDFS文件到本地 | | HDFS内部复制 | `hdfs dfs -cp` | 同一集群内复制文件/目录 | | 跨集群复制 | `hadoop distcp` | 高效的大规模跨集群数据传输| ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值