因此,我经常需要将数据加载到保存表中以运行一些数据验证检查,然后返回结果.通常,我创建保存表,然后创建一个sqlldr控制文件并将数据加载到表中,然后运行我的查询.是否有任何理由我应该使用外部表格来代替?他们会以什么方式让我的生活更轻松?
我是 azure databricks 的新手,并尝试创建一个指向 Azure Data Lake Storage (ADLS) Gen-2 位置的外部表。
从 databricks 笔记本中,我尝试为 ADLS 访问设置 spark 配置。我仍然无法执行创建的 DDL。
注意:对我有用的一种解决方案是将 ADLS 帐户安装到集群,然后使用外部表的 DDL 中的安装位置。但是我需要检查是否可以使用没有安装位置的 ADLS 路径创建外部表 DDL。
# Using Principal credentials
spark.conf.set("dfs.azure.account.auth.type", "OAuth")
spark.conf.set("dfs.azure.account.oauth.provider.type", "ClientCredential")
spark.conf.set("dfs.azure.account.oauth2.client.id", "client_id")
spark.conf.set("dfs.azure.account.oauth2.client.secret", "client_secret")
spark.conf.set("dfs.azure.account.oauth2.client.endpoint",
"https://login.microsoftonline.com/tenant_id/oauth2/token")
Run Code Online (Sandbox Code Playgroud)
数据线
create external table test(
id string,
name string
)
partitioned by (pt_batch_id bigint, pt_file_id integer)
STORED as parquet
location 'abfss://container@account_name.dfs.core.windows.net/dev/data/employee
Run Code Online (Sandbox Code Playgroud)
收到错误
Error in SQL statement: AnalysisException: org.apache.hadoop.hive.ql.metadata.HiveException: MetaException(message:Got exception: shaded.databricks.v20180920_b33d810.org.apache.hadoop.fs.azurebfs.contracts.exceptions.ConfigurationPropertyNotFoundException Configuration property account_name.dfs.core.windows.net not found.);
Run Code Online (Sandbox Code Playgroud)
我需要帮助知道这是否可以直接在 DDL …
create external table demotable(
column1 string,
column2 string,
column3 string)
row format delimited fields terminated by '|'
location '/data/demotable';
Run Code Online (Sandbox Code Playgroud)
我创建了外部表“demotable”,“/data/demotable”中的数据就像
aaa|bbb|ccc
ddd|eee|fff
www|ttt|uuu
...
yyy|uuu|kkk
Run Code Online (Sandbox Code Playgroud)
现在我想在我的数据中再添加两列,它会像
aaa|bbb|ccc
ddd|eee|fff
www|ttt|uuu
...
yyy|uuu|kkk|ppp|lll
vvv|mmm|zzz|ttt|hhh
Run Code Online (Sandbox Code Playgroud)
有什么办法可以:
1.在我的表中添加新列(用于新数据)
2.保留旧数据(只需将最后两列标记为'NULL')?
我有一个 Spark 应用程序,它以 Avro 格式写入输出文件。现在我希望这些数据在 Hive 中可用,因为使用该数据的应用程序只能通过 Hive 表来实现。
这里描述了可以通过CREATE EXTERNAL TABLE在 Hive 中使用来做到这一点。现在我的问题是,该方法的效率如何CREATE EXTERNAL TABLE。它将所有 Avro 数据复制到 HDFS 上的其他位置来工作,还是只是创建一些metainfo可用于查询 Avro 数据的 ?
另外,如果我想继续向该表添加新的 Avro 数据怎么办?我可以创建一次这样的外部表,然后继续向其中添加新的 Avro 数据吗?另外,如果有人在更新数据时查询数据怎么办?它允许原子事务吗?
我正在尝试使用 bigquery 导出功能将数据以 json 格式推送到 GCS。在该过程结束时,为了验证 GCS 文件中导出的记录计数,我创建了一个具有自动模式检测功能的外部表,只是为了获取导出的 GCS 文件中的记录计数。
这适用于单个导出的文件。但对于大小大于 1GB 的表,我使用通配符来拆分为多个文件。这会产生多个文件,并创建一些空文件。
空文件在查询外部表时导致错误:“400 架构没有字段”。
请向以下人员提出任何想法:
我得到:
ERROR [HY008]操作被取消ERROR [08S01]通信链路故障
尝试将外部.txt文件上载到Netezza数据库时.我在过去(仅在上周)完成了这项工作,但今天收到此错误.能够连接到DB,运行truncate和create table语句来加载这些数据,可以选择等等......但是没有运气加载.这是大约200K记录,这是我的代码:
INSERT INTO PTG_ITO_ETL.FINANCE_TY15_RT_TPG
SELECT * FROM EXTERNAL 'C:\\Users\\Documents\\Data Sources\\Finance_FY15_RT\\SBTPG\\TPG_INTUIT_RT_PRODIV_20150214.TXT'
USING
(
MAXERRORS 1
DATESTYLE 'MDY'
DATEDELIM '/'
BOOLSTYLE 'Y_N'
Y2BASE 2000
ENCODING 'internal'
SKIPROWS 1
REMOTESOURCE 'ODBC'
ESCAPECHAR '\'
)
Run Code Online (Sandbox Code Playgroud)
从我在这个主题上找到的其他帖子尝试过解决方案:
ERROR [08S01]在netezza中将数据插入外部表时通信链路出现故障
"我在Windows 7和Windows Server 2008 R2中发现TCP烟囱设置是罪魁祸首.
Follwing命令为我解决了这个问题:
netsh interface tcp set global rss=disabled
netsh interface tcp set global chimney=disabled
netsh interface tcp set global autotuning=disabled"
Run Code Online (Sandbox Code Playgroud)
但是,无济于事.不知道造成这个问题的原因是什么?在Windows 7上使用Aginity,Netezza版本7.0.4谢谢!
谢谢,克雷格
我正在尝试从 hive 外部表和 HDFS 目录中删除null / HIVE_DEFAULT_PARTITION但我无法删除它..我去过其他一些关于同一问题的帖子,我尝试了这些,即使它没有显示任何内容错误分区未被删除。
process_date=20160208
process_date=__HIVE_DEFAULT_PARTITION__
这些是我现在表中的分区。我只想删除配置单元默认分区。(这是外部表,所以我也需要从 HDFS 中删除相同的表)
我试过这个
ALTER TABLE Table_Name DROP IF EXISTS PARTITION(process_date='__HIVE_DEFAULT_PARTITION__');
我遇到以下错误
错误:编译语句时出错:失败:SemanticException (process_date = null) (state=42000,code=40000) 出现意外的未知分区
我尝试了下面的
ALTER TABLE table_name DROP PARTITION(process_date<'1');
没有错误,但 hive 默认分区仍然存在。
请帮我解决这个问题。
我有一个外部表,从HDFS位置(/ user/hive/warehouse/tableX)读取所有文件的数据,并在Hive中创建一个外部表.
现在,让我们假设有数据的某些预分区和所有以前的文件在几个目录与特定的命名约定吐尽< DIR_NAME > _ < incNumber >如
/user/hive/warehouse/split/
./dir_1/files...
./dir_2/files...
./dir_n/files...
Run Code Online (Sandbox Code Playgroud)
如何创建另一个外部表来跟踪拆分文件夹中的所有文件?
我是否需要创建一个在每个子文件夹(dir_x)上分区的外部表?
同样,它需要某种Hive或shell脚本,可以为每个子目录创建/添加一个分区吗?
HIVE 中的外部表按年、月和日进行分区。
那么以下查询是否会从此查询中引用的特定分区的外部表中删除数据?:-
ALTER TABLE MyTable DROP IF EXISTS PARTITION(year=2016,month=7,day=11);
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 AWS EMR 集群的 hive 服务创建一个外部表。在这里,此外部表指向某个 S3 位置。下面是我的创建表定义:
EXTERNAL TABLE if not exists Myschema.MyTable
(
columnA INT,
columnB INT,
columnC String,
)
partitioned BY ( columnD INT )
STORED AS PARQUET
LOCATION 's3://{bucket-locaiton}/{key-path}/';
Run Code Online (Sandbox Code Playgroud)
以下是我得到的异常:
2019-04-11T14:44:59,449 INFO [6a95bad7-18e7-49de-856d-43219b7c5069 main([])]: util.PlatformInfo (PlatformInfo.java:getJobFlowId(54)) - Unable to read clusterId from http://localhost:8321/configuration, trying extra instance data file: /var/lib/instance-controller/extraInstanceData.json
2019-04-11T14:44:59,450 INFO [6a95bad7-18e7-49de-856d-43219b7c5069 main([])]: util.PlatformInfo (PlatformInfo.java:getJobFlowId(61)) - Unable to read clusterId from /var/lib/instance-controller/extraInstanceData.json, trying EMR job-flow data file: /var/lib/info/job-flow.json
2019-04-11T14:44:59,450 INFO [6a95bad7-18e7-49de-856d-43219b7c5069 main([])]: util.PlatformInfo (PlatformInfo.java:getJobFlowId(69)) - Unable …Run Code Online (Sandbox Code Playgroud) external-tables ×10
hive ×7
hadoop ×3
amazon-emr ×1
amazon-s3 ×1
atomic ×1
avro ×1
azure ×1
bigdata ×1
databricks ×1
export ×1
hdfs ×1
hiveddl ×1
hiveql ×1
insert-into ×1
json ×1
netezza ×1
oracle ×1
partitioning ×1
sql ×1
sql-insert ×1
sql-loader ×1