Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon s3 红移光谱查询从S3文件返回0行_Amazon S3_Amazon Redshift_Amazon Redshift Spectrum - Fatal编程技术网

Amazon s3 红移光谱查询从S3文件返回0行

Amazon s3 红移光谱查询从S3文件返回0行,amazon-s3,amazon-redshift,amazon-redshift-spectrum,Amazon S3,Amazon Redshift,Amazon Redshift Spectrum,我试过红移光谱。下面的两个查询都成功结束,没有任何错误消息,但我无法在S3中获得上载文件的正确计数,它只返回了0行计数,即使该文件有300多万条记录 -- Create External Schema CREATE EXTERNAL SCHEMA spectrum_schema FROM data catalog database 'spectrum_db' iam_role 'arn:aws:iam::XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' c

我试过红移光谱。下面的两个查询都成功结束,没有任何错误消息,但我无法在S3中获得上载文件的正确计数,它只返回了0行计数,即使该文件有300多万条记录

-- Create External Schema
CREATE EXTERNAL SCHEMA spectrum_schema FROM data catalog 
database 'spectrum_db' 
iam_role 'arn:aws:iam::XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
create external database if not exists;

-- Create External Table

create EXTERNAL TABLE spectrum_schema.principals(
tconst VARCHAR (20),
ordering BIGINT,
nconst VARCHAR (20),
category VARCHAR (500),
job VARCHAR (500),
characters VARCHAR(5000)
)
row format delimited
fields terminated by '\t'
stored as textfile
location 's3://xxxxx/xxxxx/'
我还尝试了“存储为拼花地板”选项,结果是一样的。 我的iam角色已成功创建“s3:”、“athena:”、“glue:*”权限和glue表

为了以防万一,我确认相同的S3文件可以成功复制到红移集群中的表中。因此,我认为文件/数据本身没有问题


如果我的程序或查询有问题。任何建议都将不胜感激。

由于您的DDL没有扫描任何数据,因此问题似乎在于它没有理解s3中的实际数据。为了解决这个问题,您可以简单地使用AWS Glue crawler生成表


创建表后,您可以将此表属性与在Glue数据目录中使用DDL创建的另一个表进行比较。这将为您提供差异以及手动使用DDL创建的表中缺少的内容。

您可以从表中运行select distinct“$path”和“$size”并查看它是否确实在扫描数据吗?@Prabhakar Reddy非常感谢您的评论。我运行查询,'从spectrum_schema.principles;中选择“$path”、“$size”'没有人返回任何一行。所以似乎没有扫描S3存储桶中的数据。。。如果有任何误解,请让我知道。你能简单地在s3数据上运行一个胶水爬虫程序,以便在spectrum_db中创建一个表吗。然后再试一次查询?再次感谢您的善意建议,@Prabhakar Reddy!!创建粘合爬虫后,现在返回正确的行计数。因为前一张桌子有点不对劲。你救了我一天!非常感谢:)很高兴这个解决方案奏效了。我写了一个答案。如果对你有帮助的话,请注明答案。非常感谢你的建议。祝你有美好的一天!!