【问题标题】:How to load and store nvarchar如何加载和存储 nvarchar
【发布时间】:2016-05-04 16:34:43
【问题描述】:

​堆栈:使用 Ambari 2.1 安装 HDP-2.3.2.0-2950 我正在遵循的步骤: ​

  1. 使用 Sqoop 将 SQL Server 表加载到 HDFS 上
  2. 在 Hive 中创建 EXTERNAL 表

在执行 sqoop 导入命令时,我没有使用任何与 charset/unicode/utf-8 相关的东西,并且导入成功

在创建 Hive 外部表时,我想知道应该为原始 sql server 表中的 nvarchar 列选择什么数据类型,现在我担心即使在 Sqoop 中导入时也需要解决这个问题。

  1. ​在 Sqoop 导入中找不到相关的 charset/nvarchar 等选项
  2. 在 Hive 中,是否可以盲目使用 varchar/string 代替 nvarchar

【问题讨论】:

  • Hadoop 和 Hive 原生使用 UTF-8,因此他们不需要关心遗留字符集的遗留问题。如果 SQL Server 中所有列的字符集定义都正常,并且 Microsoft JDBC 驱动程序完成了将源字符集转换为 Java 客户端字符集的工作,那么您就完成了。
  • 我继续使用 varchar Hive 数据类型而不是 String,我希望这不会导致任何问题。 Sqoop 导入没有给出任何错误。
  • 在 Hive 中,VARCHAR ==(STRING + 检查写入实际长度是否符合最大长度)所以差异是表面的。
  • 一些输入在这里找到:community.hortonworks.com/questions/31499/…

标签: hadoop character-encoding hive sqoop nvarchar


【解决方案1】:

我们知道nvarchar 类型不能被sqoop 理解,那么我们只需要将其转换为varchar 例如

select 
CAST(col1 AS varchar )  AS col1,
col2,
col3,
col4
from table_name

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-26
    • 2018-12-07
    • 2012-11-17
    • 2018-10-05
    • 2013-11-13
    • 2020-07-28
    • 1970-01-01
    相关资源
    最近更新 更多