magicexif元数据编辑器_R语言数据处理:sparklyr数据处理操作

记录一下最近学习sparklyr的操作及问题。

读取数据

  • 读取csv数据时,设置列属性需要指定列名,例如:
> columns<-c('character','integer64','double','double','timestamp',
+            'double','double','timestamp',
+            rep('integer',3),'character',
+            'integer','integer','double','double','integer','character','character')
> names(columns)<-paste0('V',1:19)
> columns
         V1          V2          V3          V4          V5          V6          V7          V8 
"character" "integer64"    "double"    "double" "timestamp"    "double"    "double" "timestamp" 
         V9         V10         V11         V12         V13         V14         V15         V16 
  "integer"   "integer"   "integer" "character"   "integer"   "integer"    "double"    "double" 
        V17         V18         V19 
  "integer" "character" "character" 
> dynamic<-spark_read_csv(sc, 
+                         path = paste0(cachework,'/',i,'/part-*'),
+                         header = F,
+                         memory = F,
+                         name = 'dynamic',
+                         columns = columns)

不这么做的话会报错。此外,若读取的数据有内置的元数据,上面指定列属性的方法无效,请参考:https://stackoverflow.com/questions/45283913/sparklyr-how-to-change-the-parquet-data-types

(2020/7/11更新)强烈建议设置列属性,读取大文件的速度会快非常多。

  • 要查看处理过的列有没有报错,可以用sdf_read_column(raw, 'X8')
  • 写入数据尽量不要指定已存在的目录及文件,以免发生意外。例如spark_write_csv()中,mode设置为overwrite的话,会把输出文件/目录完全覆盖。

查看程序进度

在Rstudio中输入spark_web(sc)可以查看spark进程界面,在集群模式中,可以到master的web ui查看,一个简单的开启方法是使用局域网内电脑,打开浏览器输入spark设备ip:端口号(端口默认8080),例如192.154.4.40:8080。

启动集群模式,以Standalone模式为例

除了local模式之外,所有模式都要用户在设备上先启动spark。下面是一个linux的示例。

首先找到你安装spark的目录,例如/home/spark/spark-2.3.2-bin-hadoop2.7。进去之后会看到一些目录:

2441d7b8097faad35497e65d18cd0eb5.png

找到conf目录下的spark-env.sh.template脚本,复制,重命名为spark-env.sh:

4dd6ae71d318e1fd1be22ffb6cc97306.png

用vi编辑器打开,点击i进入编辑模式,在空行添加变量:

b5b35d667863fd1154f62c88a2b0d06c.png

保存,回到spark的主目录,进入sbin目录,运行start-allsh。

这样spark就启动了,要停止的话,同个目录还有个stop-all.sh,运行便可。

回到Rstudio,加载sparklyr,运行以下代码:

> conf <- spark_config()
> conf$spark.executor.memory <- "16GB"
> conf$spark.memory.fraction <- 0.9
> conf$spark.executor.cores <- 4
> conf$spark.dynamicAllocation.enabled <- "false"
> 
> sc <- spark_connect(master="spark://127.0.1.1:7077", 
+                     version = "2.3.2",
+                     config = conf,
+                     spark_home = "/home/spark/spark-2.3.2-bin-hadoop2.7/")

此时才可以使用Standalone模式。

参考资料:https://www.jianshu.com/p/b4d3db386925

spark_apply

基本上,这个函数的用法与apply没啥区别,但不同的是,无法将Spark DataFrame对象传入apply函数中:https://stackoverflow.com/questions/52753792/sparklyr-cannot-reference-table-in-spark-apply

来回试了好多遍,无论是Spark DataFrame还是R对象都不能像普通apply那样传入spark_apply。这个问题挺烦的,如果计算涉及不同对象的合并,那可能就没法用spark_apply来计算。

待续

MagicEXIF是一个专业的照片EXIF元数据编辑器,它可以从 JPEG/EXI/TIFF/RAW 等数十种文件格式中读取超过 1400 个包括 GPS 在内的标准和非标准 EXIF 项目,并且对这些项目进行修改和保存操作。此外,它同时支持读取和修改包括佳能、尼康、索尼、富士、奥林巴斯、松下、宾得、卡西欧、徕卡、理光、三星、SIGMA、苹果等在内的 16 个不同厂商的私有注释数据,还内置众多从真实原图样张中提出来的模板,是目前最全面最专业的 EXIF 修改器。 MagicEXIF元数据编辑器(EXIF修改器)在提供强大的修改功能的同时,MagicEXIF 可以最大限度保证图像的原始性,保证修改后的图像结构不被破坏,并且修改过后的图像与操作系统完全兼容。它还全面支持中文编码和Unicode编码,是市面上为数不多的直接支持中文编辑的 EXIF 修改器。 MagicEXIF元数据编辑器(EXIF修改器) 还提供众多辅助用户修改的功能,比如内置的地图组件,它可以直接将GPS数据在地图上可视化呈现,用户无需自行转化数据格式并到网络上查询。另外,MagicEXIF 还提供一个智能编辑向导,非专业用户只需跟着向导的提示一步一步操作即可完成对图像元数据的编辑。对于专业用户,MagicEXIF 更提供了一个 JPEG 段结构编辑器和十六进制编辑器,整个 JPEG 结构一览无余,方便专业用户对于文件的非EXIF元数据作进一步编辑。 MagicEXIF元数据编辑器(EXIF修改器) v1.02.0770 最新更新: 添加原图制作向导 添加两款高保真度原厂编码器(佳能和尼康) 添加批处理功能 添加一键清除 Photoshop 数据功能 o 更新内置的模板库 o 修复 XP 下保存非标准 JPEG 文件时崩溃的bug MagicEXIF软件截图
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值