




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据分析工具:ApacheDrill:Drill的性能调优1数据分析工具:ApacheDrill:Drill的性能调优1.1Drill性能调优基础1.1.1理解ApacheDrill架构ApacheDrill是一个分布式SQL查询引擎,用于对大规模数据集进行实时分析。其架构设计基于内存计算和分布式处理,能够处理结构化、半结构化和非结构化数据。Drill的核心组件包括:QueryCoordinator(查询协调器):接收SQL查询,解析并优化查询计划,然后将其分发到执行节点。ExecutionFragments(执行片段):在执行节点上运行,负责执行查询计划的各个部分。DataSources(数据源):Drill能够连接到各种数据存储,如HDFS、S3、MongoDB等,以读取数据。StoragePlugins(存储插件):为不同的数据源提供适配器,使Drill能够理解并查询这些数据源中的数据。示例:查询HDFS中的CSV文件--使用Drill查询HDFS中的CSV文件
SELECT*FROMdfs.`/drill-data/tpch/lineitem/lineitem.csv`;1.1.2Drill性能影响因素分析Drill的性能受到多种因素的影响,包括但不限于:数据布局:数据如何在存储中分布,以及数据的格式(如CSV、Parquet等)。查询优化:Drill的查询优化器如何处理查询计划,包括并行度、数据扫描策略等。硬件配置:包括CPU、内存、磁盘I/O和网络带宽。集群规模:执行查询的节点数量和配置。存储插件配置:如何配置存储插件以优化数据读取。示例:优化查询计划--使用EXPLAIN查看查询计划
EXPLAINPLANFORSELECT*FROMdfs.`/drill-data/tpch/lineitem/lineitem.csv`;通过查看查询计划,可以识别出查询中可能的瓶颈,例如数据扫描是否并行,数据是否被有效地分区等。这有助于调整查询或数据布局以提高性能。1.2进阶性能调优1.2.1数据格式选择使用更高效的数据格式,如Parquet或ORC,可以显著提高查询性能。这些格式支持列式存储,允许Drill只读取查询中涉及的列,而不是整个行。示例:将CSV转换为Parquet#使用Drill的转换功能将CSV文件转换为Parquet
drill-convertdfs.`/drill-data/tpch/lineitem/lineitem.csv`dfs.`/drill-data/tpch/lineitem/lineitem.parquet`-formatparquet转换后,查询Parquet文件将比查询CSV文件更快,因为Parquet支持列式压缩和编码,减少了I/O操作。1.2.2索引使用创建索引可以加速查询,尤其是在进行大量筛选或连接操作时。Drill支持创建列级索引,以提高特定列的查询速度。示例:创建列级索引--创建索引
CREATEINDEXidx_lineitemONdfs.`/drill-data/tpch/lineitem/lineitem.parquet`(l_orderkey);创建索引后,涉及l_orderkey列的查询将更快,因为Drill可以使用索引进行快速查找。1.2.3并行度调整Drill的查询可以并行执行,通过调整并行度,可以优化查询性能。并行度过高可能会导致资源争用,而过低则可能无法充分利用集群资源。示例:调整并行度--设置查询并行度
SETdrill.exec.fragment.parallelism=10;此设置将查询并行度设置为10,意味着查询将被分割成10个片段并行执行。根据集群的资源和查询的复杂性,可能需要调整此值以达到最佳性能。1.2.4硬件资源优化确保Drill运行的硬件资源充足,包括足够的CPU核心、内存和高速磁盘。此外,网络带宽也是关键因素,尤其是在分布式环境中。示例:调整JVM参数#在Drill的配置文件中调整JVM参数
drill.exec.memory.limit=50GB
drill.exec.memory.spill.threshold=40GB这些设置分别控制了Drill执行节点的内存限制和溢出阈值,确保查询在内存中高效运行,同时避免了不必要的磁盘I/O。1.2.5存储插件配置合理配置存储插件可以提高数据读取速度。例如,对于HDFS,可以调整块大小和副本数量;对于S3,可以优化网络连接设置。示例:优化HDFS块大小<!--在HDFS配置文件中调整块大小-->
<property>
<name>dfs.blocksize</name>
<value>128MB</value>
</property>较大的块大小可以减少元数据的开销,提高数据读取速度,但可能需要更多的内存来缓存数据。通过上述方法,可以有效地优化ApacheDrill的性能,使其在大规模数据集上运行得更快、更高效。在实际应用中,可能需要结合多种策略,根据具体的数据和查询特性进行调优。2数据分析工具:ApacheDrill:优化查询性能2.1查询优化策略2.1.1利用查询计划分析原理ApacheDrill提供了查询计划分析工具,通过分析查询计划,可以识别查询执行过程中的瓶颈,如数据扫描、数据过滤、数据排序等操作的效率。理解查询计划有助于调整查询语句,使其更高效地执行。内容使用EXPLAIN命令:在Drill中,可以使用EXPLAIN命令来查看查询的执行计划。例如,对于以下查询:SELECT*FROMdfs.drillstore.salesLIMIT10;可以使用EXPLAIN命令查看其执行计划:EXPLAINPLANFORSELECT*FROMdfs.drillstore.salesLIMIT10;分析执行计划:执行计划会显示数据源、数据读取方式、数据过滤条件、数据排序方式等信息。通过这些信息,可以判断查询是否有效地利用了索引,是否进行了不必要的数据扫描等。2.1.2优化数据存储格式原理不同的数据存储格式会影响查询性能。ApacheDrill支持多种数据存储格式,如Parquet、ORC、CSV等。Parquet和ORC格式支持列式存储,可以减少数据读取时的I/O操作,从而提高查询性能。内容选择列式存储格式:对于大数据分析,推荐使用Parquet或ORC格式,因为它们支持列式存储,可以只读取需要的列,减少I/O操作。例如,将数据从CSV格式转换为Parquet格式:drill-uadmin-padmin-d'ALTERTABLEdfs.tmp.csv_salesSETSTORAGEparquet;'利用列式存储的特性:在查询时,只选择需要的列,避免全表扫描。例如:SELECTproduct_id,sales_amountFROMdfs.drillstore.salesLIMIT10;2.1.3使用缓存提高性能原理ApacheDrill支持查询结果缓存,对于重复执行的查询,可以将结果缓存起来,下次执行相同的查询时,直接从缓存中读取结果,避免重复计算,从而提高查询性能。内容启用查询结果缓存:在Drill的配置文件中,可以设置planner.enable_cache为true来启用查询结果缓存。planner.enable_cache=true利用缓存执行查询:对于重复执行的查询,Drill会自动从缓存中读取结果。例如,执行以下查询:SELECTCOUNT(*)FROMdfs.drillstore.sales;如果查询结果已经被缓存,再次执行相同的查询时,Drill会直接从缓存中读取结果,而不会重新计算。2.1.4调整查询并行度原理查询并行度会影响查询性能。并行度越高,查询执行的并行操作越多,可以利用更多的计算资源,但同时也会增加资源管理和数据传输的开销。因此,需要根据查询的特性和系统的资源情况,调整查询并行度。内容调整并行度:在Drill的配置文件中,可以设置exec.fragment.parallelism来调整查询并行度。例如,将其设置为8:exec.fragment.parallelism=8监控并行度的影响:通过监控查询执行时间和资源使用情况,可以判断并行度设置是否合理。如果并行度设置过高,导致资源管理和数据传输的开销增加,可能反而会降低查询性能。2.1.5利用索引加速查询原理索引可以加速数据的查找和过滤操作。在Drill中,可以为数据表创建索引,以加速查询执行。内容创建索引:在Drill中,可以使用CREATEINDEX命令为数据表创建索引。例如,为sales表的product_id列创建索引:CREATEINDEXsales_idxONdfs.drillstore.sales(product_id);利用索引执行查询:在查询时,如果查询条件中包含了索引列,Drill会利用索引加速查询。例如:SELECT*FROMdfs.drillstore.salesWHEREproduct_id='12345';2.1.6优化JOIN操作原理JOIN操作是数据查询中常见的操作,但也是性能瓶颈之一。通过优化JOIN操作,可以提高查询性能。内容选择合适的JOIN算法:Drill支持多种JOIN算法,如HashJoin、MergeJoin等。对于小表和大表的JOIN,推荐使用HashJoin;对于两个大表的JOIN,如果数据已经排序,可以使用MergeJoin。--使用HashJoin
SELECT*FROMdfs.drillstore.salessJOINductspONduct_id=duct_id;
--使用MergeJoin,假设两个表都已经按照product_id排序
SELECT*FROMdfs.drillstore.salessJOINductspONduct_id=duct_id;预处理JOIN条件:在JOIN操作前,可以对JOIN条件进行预处理,如过滤、排序等,以减少JOIN操作的数据量。例如:SELECT*FROM(SELECT*FROMdfs.drillstore.salesWHEREproduct_idIN('12345','67890'))sJOINductspONduct_id=duct_id;2.1.7优化GROUPBY操作原理GROUPBY操作会将数据按照指定的列进行分组,然后对每个分组进行聚合计算。如果数据量大,GROUPBY操作会成为性能瓶颈。通过优化GROUPBY操作,可以提高查询性能。内容减少GROUPBY列的数量:GROUPBY列的数量越多,分组的粒度越细,数据量越大,性能越低。因此,应尽量减少GROUPBY列的数量。例如:SELECTproduct_id,SUM(sales_amount)FROMdfs.drillstore.salesGROUPBYproduct_id;使用预聚合:在GROUPBY操作前,可以对数据进行预聚合,以减少GROUPBY操作的数据量。例如,先对每个分区的数据进行聚合,然后再进行全局聚合:SELECTproduct_id,SUM(sales_amount)FROM(SELECTproduct_id,SUM(sales_amount)FROMdfs.drillstore.salesGROUPBYproduct_id,region_id)GROUPBYproduct_id;2.1.8优化数据过滤原理数据过滤操作会根据指定的条件,筛选出符合条件的数据。如果过滤条件复杂,或者数据量大,过滤操作会成为性能瓶颈。通过优化数据过滤,可以提高查询性能。内容使用索引加速过滤:如果过滤条件中包含了索引列,Drill会利用索引加速过滤。例如:SELECT*FROMdfs.drillstore.salesWHEREproduct_id='12345';减少过滤条件的复杂度:过滤条件越复杂,查询性能越低。应尽量减少过滤条件的复杂度,例如,避免使用OR、IN等操作符,使用AND操作符连接多个过滤条件。2.1.9优化数据排序原理数据排序操作会将数据按照指定的列进行排序。如果数据量大,排序操作会成为性能瓶颈。通过优化数据排序,可以提高查询性能。内容使用索引加速排序:如果排序列中包含了索引列,Drill会利用索引加速排序。例如:SELECT*FROMdfs.drillstore.salesORDERBYproduct_id;减少排序列的数量:排序列的数量越多,排序的复杂度越高,性能越低。应尽量减少排序列的数量。2.1.10监控和调整系统资源原理系统资源,如CPU、内存、磁盘I/O等,会影响查询性能。通过监控和调整系统资源,可以提高查询性能。内容监控系统资源使用情况:使用Drill的监控工具,如DrillWebUI,监控系统资源使用情况,识别资源瓶颈。调整系统资源分配:根据监控结果,调整系统资源分配,如增加内存、增加CPU核心数、优化磁盘I/O等。2.2结论通过以上策略,可以有效地优化ApacheDrill的查询性能,提高数据分析的效率。在实际应用中,应根据查询的特性和系统的资源情况,灵活地选择和调整优化策略。3数据分析工具:ApacheDrill:性能调优3.1配置Drill以提高性能3.1.1调整Drill配置参数ApacheDrill是一个分布式SQL查询引擎,用于大数据分析。为了提高其性能,正确配置Drill的参数至关重要。以下是一些关键的配置参数调整示例:增加内存分配Drill使用Java运行,因此可以调整JVM的内存参数。例如,增加堆内存大小可以提高查询处理速度,尤其是在处理大量数据时。#在drill-override.conf文件中增加以下行
jvm.heap.size=16g优化查询缓存查询缓存可以显著提高重复查询的性能。通过调整query.cache.size参数,可以控制缓存的大小。#在drill-override.conf文件中增加以下行
query.cache.size=1000调整并行度Drill支持查询并行执行。通过调整planner.fragment-instance-count参数,可以控制查询的并行度。#在drill-override.conf文件中增加以下行
planner.fragment-instance-count=1003.1.2优化存储布局存储布局对Drill的性能有直接影响。优化数据的存储方式可以减少查询时的数据读取和处理时间。使用列式存储列式存储格式(如Parquet或ORC)比行式存储格式(如CSV)更高效,因为它们允许Drill只读取查询中涉及的列,而不是整个行。数据分区对数据进行分区可以减少查询时需要扫描的数据量。例如,如果数据按日期分区,查询特定日期范围的数据将更快。#创建分区表示例
CREATETABLEsales(
dateDATE,
productVARCHAR,
quantityINT
)
PARTITIONBYdate;数据压缩使用数据压缩可以减少存储空间和网络传输时间。Drill支持多种压缩格式,如Snappy和Gzip。#在drill-override.conf文件中增加以下行
pression.codec=snappy3.2示例:优化Parquet文件的查询性能假设我们有一个Parquet文件,其中包含销售数据,文件名为sales.parquet。我们将通过调整Drill的配置来优化对这个文件的查询性能。3.2.1步骤1:调整JVM堆内存在drill-override.conf文件中,增加以下行以将堆内存大小设置为16GB。jvm.heap.size=16g3.2.2步骤2:启用查询缓存在drill-override.conf文件中,增加以下行以启用查询缓存,并将其大小设置为1000。query.cache.size=10003.2.3步骤3:设置查询并行度在drill-override.conf文件中,增加以下行以将查询并行度设置为100。planner.fragment-instance-count=1003.2.4步骤4:优化存储布局使用列式存储确保数据存储为Parquet格式,这可以通过在数据导入时指定格式来实现。数据分区创建一个分区表,按日期进行分区。CREATETABLEsales(
dateDATE,
productVARCHAR,
quantityINT
)
PARTITIONBYdate;数据压缩在drill-override.conf文件中,增加以下行以使用Snappy压缩。pression.codec=snappy通过以上步骤,我们可以显著提高ApacheDrill对sales.parquet文件的查询性能。这些调整包括增加内存分配、启用查询缓存、设置查询并行度,以及优化数据的存储布局,包括使用列式存储、数据分区和数据压缩。4数据分析工具:ApacheDrill:Drill与数据源的性能调优4.1连接优化:JDBC与ODBC在ApacheDrill中,优化JDBC和ODBC连接是提升查询性能的关键步骤。JDBC(JavaDatabaseConnectivity)和ODBC(OpenDatabaseConnectivity)是两种广泛使用的数据库连接标准,它们允许Drill与各种数据源进行交互。以下是一些优化连接的策略:4.1.1减少连接数原理:过多的连接会增加网络开销和资源消耗,尤其是在处理大量数据时。Drill通过减少并发连接的数量,可以降低这种开销。操作:在Drill的配置文件drill-override.conf中,可以设置planner.fragment.max参数来限制并发执行的查询片段数量。#设置并发查询片段的最大数量
planner.fragment.max=1004.1.2使用连接池原理:连接池可以复用已有的数据库连接,避免频繁创建和销毁连接的开销。操作:在Drill的配置中启用连接池,例如,对于JDBC连接,可以设置storage.jdbc.pool.enabled为true。#启用JDBC连接池
storage.jdbc.pool.enabled=true4.1.3优化连接参数原理:调整连接参数,如超时时间、缓冲大小等,可以提高数据读取效率。操作:在drill-override.conf中,可以设置storage.jdbc.fetch.size来优化数据读取的缓冲大小。#设置JDBC数据读取的缓冲大小
storage.jdbc.fetch.size=10244.2数据源特定的性能改进ApacheDrill支持多种数据源,包括HDFS、S3、MongoDB等。针对不同的数据源,可以采取特定的优化策略。4.2.1HDFS性能优化原理:HDFS的性能可以通过调整块大小、压缩算法和缓存策略来优化。操作:在HDFS存储插件的配置中,可以设置dfs.block.size来调整HDFS的块大小。#设置HDFS的块大小
dfs.block.size=1342177284.2.2S3性能优化原理:S3的性能可以通过并行读取和使用多线程来提升。操作:在Drill的S3存储插件配置中,可以设置aws.s3.concurrent.requests来增加并行请求的数量。#设置S3并行请求的数量
aws.s3.concurrent.requests=104.2.3MongoDB性能优化原理:MongoDB的性能可以通过索引、查询优化和适当的分片策略来提升。操作:在MongoDB中创建索引可以加速查询。例如,创建一个基于timestamp字段的索引。db.collection.createIndex({timestamp:1})此外,在Drill的MongoDB存储插件配置中,可以设置mongo.query.fetch.size来优化查询的读取大小。#设置MongoDB查询的读取大小
mongo.query.fetch.size=1000通过上述策略,可以显著提升ApacheDrill在处理不同数据源时的性能。每种数据源的优化点可能不同,因此需要根据具体的数据源和查询模式来调整相应的参数。5监控和诊断Drill性能5.1使用Drill监控工具在ApacheDrill中,性能监控是确保查询执行效率和资源管理的关键。Drill提供了多种内置工具和机制来帮助用户监控和诊断性能问题。以下是一些主要的监控工具和它们的使用方法:5.1.1DrillWebUIDrill的WebUI是一个直观的界面,用于查看系统状态、查询历史和性能指标。通过访问http://<drillbit-host>:8047,用户可以:查看查询历史:在Queries标签下,可以看到所有执行过的查询的列表,包括查询ID、执行时间、状态等信息。监控系统状态:System标签提供了关于集群状态、节点状态和存储插件的信息。性能指标:Metrics标签显示了各种性能指标,如CPU使用率、内存使用情况、磁盘I/O等。5.1.2Drill的JSON格式性能报告Drill可以生成JSON格式的性能报告,这可以通过执行查询时添加explain关键字来实现。例如:--SQL查询示例
EXPLAINSELECT*FROMdfs.`/drill-data/tpch/region/`LIMIT10;这个命令将返回一个JSON格式的报告,详细说明了查询的执行计划、估计的执行成本和实际的执行时间。5.1.3Drill的JMX监控Drill支持JavaManagementExtensions(JMX),这允许用户通过JMX客户端(如JConsole或VisualVM)监控Drill的运行时状态。JMX提供了关于内存、线程、垃圾回收等的详细信息。5.2性能瓶颈的诊断与解决诊断和解决性能瓶颈是优化Drill性能的重要步骤。以下是一些常见的性能瓶颈和解决策略:5.2.1数据扫描速度慢如果查询在扫描大量数据时速度慢,可能是因为数据存储格式或数据分布不均。解决方法包括:优化数据格式:使用列式存储格式(如Parquet或ORC)可以提高扫描速度。数据分区:合理地对数据进行分区,可以减少不必要的数据扫描。5.2.2CPU使用率高高CPU使用率可能是因为查询执行计划中的复杂操作。可以尝试:简化查询:避免使用复杂的函数或表达式。并行执行:确保查询可以并行执行,以充分利用多核CPU。5.2.3内存不足如果Drill在执行查询时遇到内存不足的问题,可以:增加JVM堆内存:通过调整Drill的配置文件,增加JVM的堆内存大小。优化查询:减少中间结果的大小,例如通过使用LIMIT关键字或更早地进行聚合操作。5.2.4网络延迟在分布式环境中,网络延迟可能成为性能瓶颈。优化策略包括:数据局部性:确保数据和处理数据的查询在同一节点上执行,以减少网络传输。网络配置:优化网络配置,如增加带宽或减少延迟。5.2.5磁盘I/O频繁的磁盘I/O操作会降低查询性能。可以:使用缓存:启用Drill的缓存机制,以减少对磁盘的访问。优化存储布局:确保数据在磁盘上是连续存储的,以减少寻道时间。5.2.6示例:优化数据格式假设我们有一个存储在HDFS上的CSV文件,其中包含大量记录。执行以下查询时,扫描速度可能较慢:SELECT*FROMdfs.`/drill-data/tpch/region/`LIMIT10;为了解决这个问题,我们可以将CSV文件转换为Parquet格式,然后重新执行查询。Parquet格式是列式存储,可以显著提高扫描速度,特别是在进行选择和过滤操作时。#使用ApacheParquet工具将CSV转换为Parquet
parquet-toolsconvert--input-csv/drill-data/tpch/region/--output-parquet/drill-data/tpch/region_parquet/转换后,修改Drill的查询以指向新的Parquet文件:SELECT*FROMdfs.`/drill-data/tpch/region_parquet/`LIMIT10;通过这种方式,我们可以显著提高查询的执行速度,减少数据扫描时间。5.2.7示例:优化查询以减少中间结果假设我们有以下查询,它在执行时可能产生大量的中间结果,导致内存压力:SELECTCOUNT(*),SUM(salary)FROMemployeeGROUPBYdepartment;为了减少中间结果的大小,我们可以先进行局部聚合,然后再进行全局聚合:--使用子查询进行局部聚合
SELECTdepartment,COUNT(*)ascount,SUM(salary)astotal_salary
FROMemployee
GROUPBYdepartment;
--然后进行全局聚合
SELECTSUM(count),SUM(total_salary)
FROM(
SELECTdepartment,COUNT(*)ascount,SUM(salary)astotal_salary
FROMemployee
GROUPBYdepartment
);虽然这增加了查询的复杂性,但它可以显著减少中间结果的大小,从而降低内存使用。通过使用Drill的内置监控工具和采取上述策略,我们可以有效地诊断和解决性能瓶颈,优化ApacheDrill的查询性能。6高级性能调优技巧6.1并行处理与资源分配在ApacheDrill中,性能调优的一个关键方面是优化并行处理和资源分配。Drill设计为分布式查询引擎,能够并行执行查询,这使其在处理大规模数据集时非常高效。然而,为了最大化性能,需要正确配置和调整并行处理的参数以及资源分配。6.1.1并行处理Drill的并行处理主要通过调整查询并行度和数据并行度来实现。查询并行度是指同时执行的查询数量,而数据并行度是指在单个查询中并行处理的数据分片数量。通过增加并行度,可以提高查询的执行速度,但同时也可能增加资源消耗和网络负载。示例:调整查询并行度#在Drill的配置文件中,可以设置查询并行度的参数
drill.exec.query.parallelism=4这行配置表示Drill将并行执行4个查询。根据你的硬件资源和工作负载,可能需要调整这个值以达到最佳性能。示例:调整数据并行度#设置数据并行度的参数
drill.exec.fragment.parallelism=8这表示在每个查询中,Drill将并行处理8个数据分片。如果数据集非常大,可以考虑增加这个值。6.1.2资源分配资源分配涉及到内存、CPU和磁盘I/O的管理。Drill提供了多种参数来控制这些资源的使用,确保查询执行时不会因为资源争用而降低性能。示例:内存管理#设置每个查询的内存限制
drill.exec.memory.limit=1GB这行配置限制了每个查询可以使用的内存量,避免了内存溢出的风
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 企业并购重组财务顾问与法律顾问合作协议
- 能源企业财务预测与预算编制合同
- 公共车库租赁与智能停车诱导系统升级合同
- 有限空间作业气体报警
- 二外日本語優秀テキスト
- 经济部门工作总结
- 吸烟有害健康大班公开课
- 大学生心理健康与成长
- 药毒中医护理方案
- 医院新进人员院感岗前培训
- 南京市指导服务企业安全生产工作指引-加油站现场安全重点检查指引分册
- AQ/T 2077-2020 页岩气井独立式带压作业机起下管柱作业安全技术规范(正式版)
- 【8物(沪科版)】合肥市第四十五中学2023-2024学年八年级下学期期末物理试题
- 区域代理商合同模板
- 国家开放大学(浙江)地域文化(本)作业1-5
- HG/T 2520-2023 工业亚磷酸 (正式版)
- 会所会员管理制度
- DZ/T 0462.8-2023 矿产资源“三率”指标要求 第8部分:硫铁矿、磷、硼、天然碱、钠硝石(正式版)
- 广东省广州市海珠区2024年七年级下册数学期末试卷附答案
- 湖南省长沙市芙蓉区2022-2023学年一年级下学期期末测试数学试卷
- JT-T 1495-2024 公路水运危险性较大工程专项施工方案编制审查规程
评论
0/150
提交评论