我有大约 100GB 的用户数据,想要在我的笔记本电脑上使用 Apache Spark 处理它。我已经安装了 Hadoop 和 Spark,为了测试,我将大约 9 GB 的文件上传到 HDFS 并使用pyspak访问和查询它。
当我查询特定用户的数据时,测试文件共有 113959238 条记录/行,即
select * from table where userid=????
Run Code Online (Sandbox Code Playgroud)
检索该用户的记录大约需要 6 分钟,如果我运行整个文件,那么将花费很多时间。我对该数据进行的分析是提取用户的记录,对其运行一些操作,然后为文件中的所有用户处理第二个用户的数据,依此类推。用户查询的数据不会太多,因此可以将其加载到内存中并且可以更快地执行操作。但是从这个大文件中查询用户的记录需要时间并且会减慢进程。
据说 Spark 的速度很快,所以我肯定会错过一些东西,这就是为什么它需要花时间。我在执行查询时注意到的一件事是 Spark 没有利用完整的 RAM,而是几乎 100% 的 CPU。
我的机器规格是:
我还使用 Spark 而不是 HDFS 文件直接查询文本文件的数据,但时间上没有太大差异。我写的python代码是
from pyspark import SparkContext, SparkConf
from pyspark.sql import SparkSession, HiveContext,SQLContext
import time
conf=SparkConf()
conf.set("spark.executor.memory", "8g")
conf.set("spark.driver.memory", "8g")
sparkSession = SparkSession.builder.appName("example-pyspark-read-and-write").getOrCreate()
sc=sparkSession.sparkContext.getOrCreate(conf)
sqlContext=SQLContext(sc)
#df_load = sparkSession.read.format("csv").option("header","true").load("hdfs://0.0.0.0:19000/test.txt")
df_load = sparkSession.read.format("csv").option("header","true").load("C:/Data/test_file/test.txt")
table=df_load.registerTempTable('test')
sp_tstart=time.time()
df=sqlContext.sql("select * from test where user_id='12345'")
db=df.rdd.collect() …
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用其角色和系统权限导出 Oracle 中的架构/用户。我不想导出任何数据或任何表。我尝试使用以下命令导出用户。
expdp system/system@gisdblocal include=user DIRECTORY = TestBack
logfile=test12.log DUMPFILE=test12.dmp SCHEMAS=test_replication
Run Code Online (Sandbox Code Playgroud)
当我将其导入其他数据库或具有不同名称的同一数据库中时,即
impdp system/system@gisdblocal DIRECTORY = TestBack DUMPFILE = test12.dmp
SCHEMAS = test_replication REMAP_SCHEMA =
test_replication:test_replication_copy
Run Code Online (Sandbox Code Playgroud)
用户或架构已创建,但尚未被授予任何角色或系统权限。
我这样做是因为我使用没有所需权限DATAPUMP_IMP_FULL_DATABASE或DATAPUMP_EXP_FULL_DATABASE的用户创建了模式的备份。当我在另一个数据库中恢复该备份时,它说该用户不存在。因此,我想先创建一个具有相同权限的用户,然后再恢复备份。