我在Hive中实现了一项任务.目前它在我的单节点集群上工作正常.现在我打算在AWS上部署它.
我对AWS一无所知.如果我计划部署它,那么我应该选择Amazon EC2或Amazon EMR?
我想改善我的任务的表现.哪一个更好,更可靠?如何接近他们?我听说我们也可以在AWS上注册我们的VM设置.可能吗?
请尽快建议我.
非常感谢.
我有 2 个 Aws RDS 实例(在 Postgresql 上运行)。两者都在不同的帐户和不同的地区。我想使用 AWS DMS 在它们之间设置数据复制。我尝试过进行 VPC 对等互连。我观看了以下视频以启用 VPC 对等互连:-
https://www.youtube.com/watch?v=KmCEFGDTb8U
问题:-
当我尝试创建 AWS DMS 服务时,我为源添加了主机名、用户名和密码等(存在于其他账户上),当我点击 时Test Connection,出现以下错误。
Test Endpoint failed: Application-Status: 1020912, Application-Message: Failed to connect Network error has occurred, Application-Detailed-Message: RetCode: SQL_ERROR SqlState: 08001 NativeError: 101 Message: [unixODBC]timeout expired ODBC general error.
Run Code Online (Sandbox Code Playgroud)
Test Connection令我惊讶的是,当我点击同一账户中的目标 RDS 实例时,我收到了类似的错误。IE:-
Test Endpoint failed: Application-Status: 1020912, Application-Message: Cannot connect to ODBC provider Network error has occurred, Application-Detailed-Message: RetCode: SQL_ERROR SqlState: 08001 NativeError: 101 Message: [unixODBC]timeout …Run Code Online (Sandbox Code Playgroud) postgresql amazon-web-services amazon-rds amazon-vpc aws-dms
我想从 DATE 类型中提取该月(而不是一年)中的周数。
示例:今天的日期是 07/08/2018。我不想要32结果(一年中的一周),但是2,因为今天是八月的第二周。
我期待类似的东西
SELECT EXTRACT($func FROM current_date);
Run Code Online (Sandbox Code Playgroud)
结果:2
该月的第一周从该月的第一天持续到第一个周日(第一周可能持续 1 到 7 天,例如,本月第一周从 2018 年 1 月 8 日星期三到星期日) 2018 年 5 月 8 日,5 天)。
添加本月的日历,为用户提供更多背景信息:
在启动 Spark-submit / pyspark 时,我们确实可以选择使用该--jars选项指定 jar 文件。我们如何在 pyspark.xml 中指定 Maven 依赖项?运行 pyspark 应用程序时,我们是否必须始终传递所有 jars,还是有更干净的方法?
语境
我正在Spark 集群上执行 Spark 工具(如果有兴趣,这是 Spark 工具)。该工具正在从 HDFS 读取输入文件,并将在 HDFS 中生成输出文件。
我有 2 个 Azure VM,带有一个 Spark Master 容器、一个 Namenode 容器、两个 Spark Worker 容器和两个 Datanode 容器(另外两个容器提供工具所需的文件,但我不认为它很重要),使用 Docker 配置一群。
这是我用来运行 Spark 工具的 Bash 命令:
/gatk/gatk BwaAndMarkDuplicatesPipelineSpark \
--input hdfs://namenode:8020/PFC_0028_SW_CGTACG_R_fastqtosam.bam \
--reference hdfs://namenode:8020/hg19-ucsc/ucsc.hg19.2bit \
--bwa-mem-index-image /reference_image/ucsc.hg19.fasta.img \
--disable-sequence-dictionary-validation true \
--output hdfs://namenode:8020/PFC_0028_SW_CGTACG_R_dedup_reads.bam \
-- --spark-runner SPARK --spark-master spark://$SPARK_MASTER_HOST:7077 \
--driver-memory 30g --executor-cores 4 --executor-memory 15g
Run Code Online (Sandbox Code Playgroud)
问题
几个小时后,我收到此错误:
18/02/08 23:10:42 WARN TaskSetManager: Lost task 15.0 in stage 5.0 (TID 3087, 10.0.0.10, …Run Code Online (Sandbox Code Playgroud) 给定 S3 上由时间戳字段分区的 1.4 TB Parquet 数据的数据源(因此分区为year- month- day),我正在查询特定日期的数据(2.6 GB 数据)并通过 Redshift 检索 Parquet 文件中的所有可用字段此查询的频谱:
SELECT *
FROM my_external_schema.my_external_table
WHERE year = '2020' and month = '01' and day = '01'
Run Code Online (Sandbox Code Playgroud)
该表可通过Glue Crawler访问,该 Glue Crawler 指向 S3 中的顶层“文件夹”;这将创建一个数据库,然后通过此命令将数据库链接到新的外部架构:
create external schema my_external_schema from data catalog
database 'my_external_schema'
iam_role 'arn:aws:iam::123456789:role/my_role'
region 'my-region-9';
Run Code Online (Sandbox Code Playgroud)
在我的 IDE 中分析该表,我可以看到该表是由以下语句生成的:
create external table my_external_schema.my_external_table
(
id string,
my_value string,
my_nice_value string
)
partitioned by (year string, month string, …Run Code Online (Sandbox Code Playgroud) amazon-s3 amazon-web-services amazon-redshift amazon-redshift-spectrum aws-glue-data-catalog
我正在尝试获取通过 AWS Glue 中的 S3 数据目录加载的每个文件的输入文件名(或路径)。
我读过一些input_file_name()应该提供这些信息的地方(尽管警告说这只在调用时有效,from_catalog而不是from_options,我相信我是!)。
所以下面的代码似乎应该可以工作,但总是为每个input_file_name.
import sys
from awsglue.context import GlueContext
from awsglue.job import Job
from awsglue.utils import getResolvedOptions
from pyspark.context import SparkContext
from pyspark.sql.functions import input_file_name
args = getResolvedOptions(sys.argv, ['JOB_NAME', 'TempDir'])
sc = SparkContext()
gc = GlueContext(sc)
spark = gc.spark_session
job = Job(gc)
job.init(args['JOB_NAME'], args)
# Get the source frame from the Glue Catalog, which describes files in S3
fm_source = gc.create_dynamic_frame.from_catalog(
database='database_name',
table_name='table_name',
transformation_ctx='fm_source',
) …Run Code Online (Sandbox Code Playgroud) AWS Redshift最近发布了自己的新编码格式AZ64,他们说:
与ZSTD编码相比,AZ64消耗的存储空间减少了5–10%,速度提高了70%
当我使用A时,ANALYZE COMPRESSION my_table我仍然收到ZSTD其所有列的编码格式。
因此,是否真的建议将其作为ZSTD上的编码格式?我是否会天真的喜欢AZ64?
就像在这个AWS 论坛问题中一样,我同时运行 2 个作业。该作业已配置,Max concurrency: 10但在执行时job.commit()我收到此错误消息:
py4j.protocol.Py4JJavaError: An error occurred while calling z:com.amazonaws.services.glue.util.Job.commit.
: com.amazonaws.services.gluejobexecutor.model.VersionMismatchException:
Continuation update failed due to version mismatch. Expected version 6 but found version 7
(Service: AWSGlueJobExecutor; Status Code: 400; Error Code: VersionMismatchException; Request ID: 123)
Run Code Online (Sandbox Code Playgroud)
两个作业读取不同部分的数据。
但我不明白这里有什么问题以及如何处理它。有人可以帮忙吗?
我正在一个包含多个具有不同架构的文件的文件夹上运行爬网程序。我希望为每个文件找到一个表。
发生的情况是,在 Glue Catalog 中,我实际上可以看到每个文件的一个表,以及它自己的架构。但是当我尝试通过 Redshift Spectrum 查询它时(创建外部架构等之后),我得到了这个异常:
[XX000][500310] [Amazon](500310) Invalid operation: Parsed manifest is not a valid JSON object.
Run Code Online (Sandbox Code Playgroud)
如何修复它?
amazon-s3 amazon-web-services amazon-redshift amazon-redshift-spectrum aws-glue
apache-spark ×4
amazon-s3 ×3
aws-glue ×3
postgresql ×2
pyspark ×2
amazon-ec2 ×1
amazon-emr ×1
amazon-rds ×1
amazon-vpc ×1
aws-dms ×1
encoding ×1
hadoop ×1
hive ×1
java ×1
maven ×1
sql ×1
zstd ×1