精华内容
下载资源
问答
  • 本篇文章记录各区域热门商品统计-Spark SQL数据倾斜解决方案。 摘要 内容 聚合源数据 过滤导致倾斜的key 提高shuffle并行度:spark.sql.shuffle.partitions 双重group by reduce join转换为map join:spark...

    目录

    摘要

    内容 


    本篇文章记录各区域热门商品统计-Spark SQL数据倾斜解决方案。

    摘要

     

    内容 

    1. 聚合源数据
    2. 过滤导致倾斜的key
    3. 提高shuffle并行度:spark.sql.shuffle.partitions
    4. 双重group by
    5. reduce join转换为map join:spark.sql.autoBroadcastJoinThreshold
    6. 采样倾斜key并单独进行join
    7. 随机key与扩容表

    由于Spark的这种都是基于RDD的特性,Spark SQL,原本是用纯的SQL来实现的,用纯RDD,也能够实现一模一样的功能。

    之前使用在Spark Core中的数据倾斜解决方案,全部都可以直接套用在Spark SQL上。

    之前讲解的方案,如果是用纯的Spark SQL来实现,应该如何来实现。

    1、聚合源数据:Spark Core和Spark SQL没有任何的区别
    2、过滤导致倾斜的key:在sql中用where条件
    3、提高shuffle并行度:groupByKey(1000),spark.sql.shuffle.partitions(默认是200)

      sqlContext.setConf("spark.sql.shuffle.partitions", "1000"); 


    4、双重group by:改写SQL,两次group by

        /**
         * 双重group by
         */
    
    String _sql =
            "SELECT "
                + "product_id_area,"
                + "count(click_count) click_count,"
                + "group_concat_distinct(city_infos) city_infos "
            + "FROM ( "
                + "SELECT "
                    + "remove_random_prefix(product_id_area) product_id_area,"
                    + "click_count,"
                    + "city_infos "
                + "FROM ( "
                    + "SELECT "
                        + "product_id_area,"
                        + "count(*) click_count,"
                        + "group_concat_distinct(concat_long_string(city_id,city_name,':')) city_infos "
                    + "FROM ( "
                        + "SELECT "
                            + "random_prefix(concat_long_string(product_id,area,':'), 10) product_id_area,"
                            + "city_id,"
                            + "city_name "
                        + "FROM tmp_click_product_basic "
                    + ") t1 "
                    + "GROUP BY product_id_area "
                + ") t2 "
            + ") t3 "
            + "GROUP BY product_id_area ";

    RandomPrefixUDF.java

    package graduation.java.spark.product;
    
    
    import org.apache.spark.sql.api.java.UDF2;
    
    import java.util.Random;
    
    /**
     * FileName: RandomPrefixUDF
     * Author:   hadoop
     * Email:    3165845957@qq.com
     * Date:     19-4-2 上午10:52
     * Description:
     * random_profix()
     * 拼接一个随机前缀
     *
     */
    public class RandomPrefixUDF implements UDF2<String,Integer,String> {
        private static final long serialVersionUID =1L;
        @Override
        public String call(String val, Integer integer) throws Exception {
            Random random = new Random();
            int randNum = random.nextInt(integer);
            return randNum+"_"+val;
        }
    }
    

    RemoveRandomPrefixUDF.java

    package graduation.java.spark.product;
    
    import org.apache.spark.sql.api.java.UDF1;
    
    /**
     * FileName: RemoveRandomPrefixUDF
     * Author:   hadoop
     * Email:    3165845957@qq.com
     * Date:     19-4-2 上午10:49
     * Description:
     * 去除随机前缀
     */
    public class RemoveRandomPrefixUDF  implements UDF1<String,String> {
        private static final long serialVersionUID = 1L;
        @Override
        public String call(String s) throws Exception {
            String[] valSplited = s.split("_");
            return valSplited[1];
        }
    }
    


    5、reduce join转换为map join:spark.sql.autoBroadcastJoinThreshold(默认是10485760 )
      可以自己将表做成RDD,自己手动去实现map join
      Spark SQL内置的map join,默认是如果有一个小表,是在10M以内,默认就会将该表进行broadcast,然后执行map join;调节这个阈值,比如调节到20M、50M、甚至1G。20971520

    sqlContext.setConf("spark.sql.autoBroadcastJoinThreshold", "20971520");


    6、采样倾斜key并单独进行join:纯Spark Core的一种方式,sample、filter等算子
    7、随机key与扩容表:Spark SQL+Spark Core

    JavaRDD<Row> rdd = sqlContext.sql("select * from product_info").javaRDD();
        JavaRDD<Row> flattedRDD = rdd.flatMap(new FlatMapFunction<Row, Row>() {
    
            private static final long serialVersionUID = 1L;
    
            @Override
            public Iterator<Row> call(Row row) throws Exception {
                List<Row> list = new ArrayList<Row>();
    
                for(int i = 0; i < 10; i ++) {
                    long productid = row.getLong(0);
                    String _productid = i + "_" + productid;
    
                    Row _row = RowFactory.create(_productid, row.get(1), row.get(2));
                    list.add(_row);
                }
    
                return list.iterator();
            }
    
        });
    
    StructType _schema = DataTypes.createStructType(Arrays.asList(
            DataTypes.createStructField("product_id", DataTypes.StringType, true),
            DataTypes.createStructField("product_name", DataTypes.StringType, true),
            DataTypes.createStructField("product_status", DataTypes.StringType, true)));
    
    Dataset _df = sqlContext.createDataFrame(flattedRDD, _schema);
    _df.registerTempTable("tmp_product_info");
    
    String _sql =
            "SELECT "
                + "tapcc.area,"
                + "remove_random_prefix(tapcc.product_id) product_id,"
                + "tapcc.click_count,"
                + "tapcc.city_infos,"
                + "pi.product_name,"
                + "if(get_json_object(pi.extend_info,'product_status')=0,'自营商品','第三方商品') product_status "
            + "FROM ("
                + "SELECT "
                    + "area,"
                    + "random_prefix(product_id, 10) product_id,"
                    + "click_count,"
                    + "city_infos "
                + "FROM tmp_area_product_click_count "
            + ") tapcc "
            + "JOIN tmp_product_info pi ON tapcc.product_id=pi.product_id ";
    
        Dataset ds = sqlContext.sql(sql);
        ds.registerTempTable("tmp_area_fullprod_click_count");

     

    展开全文
  • 123phpshop电商系统 v1.5

    2019-10-23 14:01:51
    123PHPSHOP是专门为中国的企业和开发人员量身打造的电商解决方案。本软件具有以下特点:支持无限商品分类支持无限产品数量支持非MVC-最快开发方式支持商品评论支持商品咨询支持商品回收站支持文章回收支持品牌管理...
  • 全渠道新零售解决方案:全面打通零售业PC端、移动端、线下门店端,真正帮助零售商企形成前端和后端,线上与线下为一体的全渠道零售体系,重构消费者、商品、场景关系,实现三维一体化管理。电商领域全行业 生态...

    紧随电商发展趋势,打造符合客户自身的电商路径。

    多用户商城系统:

    多用户商城系统以B2B2B2C的理念出发,创新模块化设计,自营、招商、批发、供货、分销、城市站点、区域代理、O2O门店,一套系统即可搞定!

    d26cab7635ed500d7786e8b86c0d1a44.png

    全渠道新零售解决方案

    全面打通零售业PC端、移动端、线下门店端,真正帮助零售商企形成前端和后端,线上与线下为一体的全渠道零售体系,重构消费者、商品、场景关系,实现三维一体化管理。

    电商领域全行业 生态系统与服务提供商,平台电商、移动分销、小程序、企业商城、新零售、区块链...您的电商需求,商联达帮您实现。

    新零售解决方案,新零售时代快人一步

    全渠道零售解决方案:新零售的核心在于线上线下和配送的结合,商联达新零售商城解决方案包含电商平台+连锁门店+ERP+IM+...线上下单,线下服务 · 线上发券,线下核销 · 线下缺货,线上代发 · 线下购物,线上会员 ……

    b8e6fdff666765336c12edce7694b443.png

    O2O门店解决方案,线上线下双店模式

    以线下实体门店为核心,打通品牌的线上线下渠道,解决复杂的网店搭建、客情维护、营销策划、进销存管理等,让连锁门店运营 管理更高效!门店地址 地图导航· 门店抢单 订单指派· 线上下单 到店自提。

    跨境电商解决方案,成熟跨进商城系统

    专注解决跨境电商企业的清关效率低下、库存管理、分销发展吃力、信用问题凸显和政策支持困境 一招解决5大困境 · 3大主流化运营模式 · 订单同步海关系统 · 高效率业务流程 。

    农村电商解决方案,摆脱农村电商布局之困

    凭借贴近农户的各县、村级服务站以及乡村推广员等特色优势,完美打通当下农村/城市之间的信息壁垒,有效实现“农产品上行, 工业品下行”的双向互通,解决:· 物流配送 · 消费群体不会操作 · 信任问题 · 平台引流等难题。

    bd5c7c1b2ecdc0d080af50fda665a2d2.png

    零售商超电商解决方案,多点布局全渠道覆盖

    结合互联网趋势与商超行业的特性,提供多销售终端,线上线下一体化,从商品销售管理、财务结算到物流配送 ...

    山东掌趣网络科技有限公司专业开发完善的 · 商品管理体系 · 会员管理体系 · 营销管理体系 · 商超结算体系 。

    官方商城解决方案,自建商城独立引流

    快速搭建多终端在线零售官方商城,打通会员、积累客户,支持门店O2O粉碎“渠道单一” 7大线上商城统一后台管理运营 只有尽可能广的在线上铺货、售货,接触到消费者的可能性才会越大。

    展开全文
  • 本期Facebook为大家带来了跨境营销解决方案,希望各位卖家通过Facebook的跨境解决方案开拓新市场,下面快来跟Facebook代理YinoLink易诺仔细看看吧~ 一、使用全球/区域定位,找到更多客户 借助全球定位和地区定位...

    Facebook跨境营销四大方案来了!

    Facebook6月第二周产品更新已新鲜出炉!本期Facebook为大家带来了跨境营销解决方案,希望各位卖家通过Facebook的跨境解决方案开拓新市场,下面快来跟Facebook代理YinoLink易诺仔细看看吧~

    一、使用全球/区域定位,找到更多客户

    借助全球定位和地区定位工具,您可选择在全球任何地方展示广告。您只需创建一个Facebook广告系列,即可面向全球或不同地区投放广告。Facebook将自动向表现更出色的市场投放更多广告。

    具体设置方式如下图:

    3830.png

    您还可以在Facebook广告管理工具中选择“浏览”,打开区域和国家 / 地区下拉菜单。系统会面向指定地区的用户展示广告并监测广告表现。如果广告在某些地区的表现更好,系统会将更多的预算用于向这些地区的用户投放广告。您可以在Facebook广告管理工具中查看按地区细分的成效数据。你可以保存地区列表,以便在今后的Facebook广告系列中重复使用。

    二、建立多国类似受众,找到潜在客户

    投放过广告的Facebook广告主都知道,广告扩量一般都会根据现有受众的特性去找新的受众,这个新的受众就是我们经常说的类似受众,国际类似受众也是这样,在全球内根据现有受众特性去寻找新的受众。

    三、使用动态语言优化,让你的广告更受当地客户喜欢

    3831.png

    Facebook动态语言优化就是Facebook向根据不同受众展示他喜欢的语言版本的广告。最大的好处就是能更好的和客户沟通交流。

    57%的全球网购者表明,购物网站的语言会影响购物体验,如果网站上面的语言是母语的话,下单可能会更快。有案例表明,在广告创意、受众和版位都保持一致的前提下,使用多语言动态优化让广告花费回放增长68%,付费用户人均花费增长76%,广告转化率增长60%。

    对于跨境卖家来说,如果我同时要在好几个国家去投放广告,该怎么办呢?Facebook代理YinoLink易诺建议使用动态语言优化,下面给大家介绍下如何创建多重语言版本的广告。

    1. 进入BM后台,在完成Facebook广告系列和广告组的创建后,在广告层级,选择“用多种语言创建广告”的选项

    2. 从选择语言下拉菜单中选择默认语言

    3832.png

    如果您提供的其他语言与目标受众使用的语言均不匹配,则会显示此语言版本的广告

    3. 选择 + 添加语言,最多可额外添加 48 种语言

    4. 除了为每种语言添加不同的网址以外,您还可以选择为每种额外语言添加新的图片或视频

    考虑目标市场的用户语言使用情况,使用多语言动态广告优化 ,增加当地的语言种类,如你的目标市场是美国,语言可以选择英语和西班牙语,还有我们要不停的测试,观察本地化语言与非本地化语言的表现差异。

    四、简化广告系列架构,少花冤枉钱

    Facebook代理YinoLink易诺建议Facebook广告主投多国家的时候,广告账户不要一个国家创建一个广告系列 。

    3833.png

    我们做3个测试:

    测试1:使用单个广告组定位所有国家/ 地区

    测试2:为每个国家/ 地区创建一个广告组

    测试3:为每个国家/ 地区创建一个广告系列

    对比测试 1 与测试 3 ,每增加1次转化的费用平均降低 20% ,CPA 平均降低 10% ;对比测试 2 与测试 3, 每增加转化转化的费用平均降低 11% ,CPA 平均降低 9% ;对比测试 1 与测试 2, 每增加1次转化的费用平均降低 10%,CPA 平均降低 5%。

    综合数据来看,Facebook代理YinoLink易诺建议各位广告主在面向国际受众营销时,尽量采用测试 1 的广告系列架构以获取最佳成效。如果无法采用测试 1 的广告系列架构,那么尽量采用测试 2 的架构。

    展开全文
  • 首页搜索区域的布局  解决小问题  但页面很大的时候,我们作的移动适配方案会呈现很大的字体,这不是我们想要的。所以加一个判断,解决页面字体过大的问题。 在index.html的script里加入判断页面的语句。 ...

    首页搜索区域的布局

     解决小问题

      但页面很大的时候,我们作的移动适配方案会呈现很大的字体,这不是我们想要的。所以加一个判断,解决页面字体过大的问题。
      在 index.htmlscript里加入判断页面的语句。

     if(htmlWidth&gt;750){htmlWidth=750}

      当页面宽度大于750px时,我们就把页面的宽度设置成750像素。

      搜索条的布局(search bar)

      *** 1. icon图标的下载 ***

      利用van-rowvan-col我们快速布局一个搜索条的html骨架出来,代码如下。

     
    <!--search bar layout-->
    <div class="search-bar">
        <van-row>
            <van-col span="3">icon</van-col>
            <van-col span="16">serach input</van-col>
            <van-col span="5">button</van-col>
        </van-row>
    </div>
     

      *** 2. icon图标的下载 ***

      图标的下载我们依然在iconfont(网址:http://www.iconfont.cn/)进行下载,
      找到自己喜欢的图标后,我们新建images文件夹,目录为src/assets/images,以后会把所有的项目图片都放到这里。

      *** 3. 正确引入图片 ***
      有很多小伙伴都在引入图片时摘了跟头,有的是开发时引入错误,有的是开发完成后,build时路径不对了。如果用require引入图片,在不作任何配置的情况下就可以基本解决你的图片路径问题。
      先把图片用require引进到页面中:

    export default {
        data() {
            return {
                locationIcon: require('../../assets/images/location.png')
            }
        },
    }
     

      然后通过绑定属性的方法插入图片

    <van-col span="3"><img :src="locationIcon" width="100%" /></van-col>

      这时候进行预览,图片已经正常显示在浏览器中了。

      *** 4. 写input和button ***

      这里都是CSS样式和基本的html结构,所以直接上代码了。视频中我会作讲解说明,你可以完全拷贝下面的代码来看效果,然后进行修改学习。

    <template>
        <div>
    <!--search bar layout-->
    <div class="search-bar">
        <van-row gutter="5">
            <van-col span="3"><img :src="locationIcon" width="80%" class="location-icon" /></van-col>
            <van-col span="16">
              <input type="text" class="search-input"/>
            </van-col>
            <van-col span="5"><van-button size="mini">查找</van-button></van-col>
           
        </van-row>
    </div>
        </div>
    </template>
     
    <script>
     
     
    export default {
        data() {
            return {
                locationIcon: require('../../assets/images/location.png')
            }
        },
    }
    </script>
     
    <style scoped>
      .search-bar{
          height: 2.2rem;
          background-color: #e5017d;
          line-height:2.2rem;
     
      }
      .search-input{
          width:100%;
          height: 1.3rem;
          border-top:0px;
          border-left:0px;
          border-right:0px;
          border-bottom: 1px solid 1px !important ;
          background-color: #e5017d;
          color:#fff;
      }
      .location-icon{
          padding-top: .2rem;
          padding-left: .3rem;
      }
     
    </style>

     

    转载于:https://www.cnblogs.com/xiaofandegeng/p/9084605.html

    展开全文
  • 123phpshop v1.5.zip

    2019-07-07 15:54:10
    123PHPSHOP是专门为中国的企业和开发人员量身打造的电商解决方案,我们采取了免费,开源和简单的策略,希望帮助我们的客户从人员招聘到二次开发都能够轻松应对。 123phpshop软件具有以下特点: 免费,项目0元即时...
  • 主动从各模式横向比较的数据分析中发现问题,提出解决方案 5. 定期的到实际运作***线发现销售执行、销售系统模式存在的问题、机会点,提出解决方案 6. 适时的制定有关于销售系统、销售模式执行的激励和考核方案,...
  • 销售数据分析师的职责 销售数据分析师负责电商商品运营及数据分析并编制报表.对公司整体销售与库存数据分析。下面是小编为您精心整理的销售数据分析师... 主动从各模式横向比较的数据分析中发现问题,提出解决方案 ...
  • (34)在许多APP,尤其是电商APP中,会在购物车、订单或消息图标的右上角设计一个数字角标,...解决方案: A数字超过100时,显示99+。 B 改变角标区域的形状。   (35)大多数APP中的许多功能需要在登录状态才能正常使用,
  • 闻康集团成立于2007年,历经十余年的发展已经成为中国领先的一站式综合医疗服务平台和医疗大健康产业领域整体解决方案提供商, 业务涵盖在线医疗平台、区域智慧医疗、智能健康管理、医药电商平台、互联网医院、医疗...
  • 闻康集团成立于2007年,历经十余年的发展已经成为中国领先的一站式综合医疗服务平台和医疗大健康产业领域整体解决方案提供商, 业务涵盖在线医疗平台、区域智慧医疗、智能健康管理、医药电商平台、互联网医院、医疗...
  • 前技术领域全面做上述征信数据解决方案的公司不多,南有七侠犬,北有聚合,大家以各自的区域、需求、费率等综合情况进行评估后选定伙伴。 随着电商、金融业和移动互联网的普及,个人身份画像较十年前有了跨越式的...
  •  大客户总监的具体职责范围1 职责: 1、负责销售区域内销售工作,制定个性化营销方案,独立完成销售指标,并能主动独立解决工作中遇到的疑难; 2、负责拓展银行、小额贷款公司、商协会、民生行业(如餐饮零售、...
  • DSShop商城系统是一套完善的B2C(单用户商城)解决方案。系统pc端后台使用国内优秀开源框架THinkPHP,基于PHP+MySQL开发,采用B/S架构,wap端使用vue.js构造,依据6年电商经验打造出的一套开源的B2C电子商务系统。...
  • DSShop商城系统是一套完善的B2C(单用户商城)解决方案。系统pc端后台使用国内优秀开源框架THinkPHP,基于PHP MySQL开发,采用B/S架构,wap端使用vue.js构造,依据6年电商经验打造出的一套开源的B2C电子商务系统。 ...
  • ◆ 兼容各种型号手机及浏览器统一解决方案,从可视化开发环境到部署发布一键完成 ◆ 前后台代码统一集成化设计,前后台代码全部统一采用JavascriptV8,开发者无需使用多种编程语言进行前后台设计 ◆ 高度集成化的...
  • 1.2.4 Android移动Web项目开发的三种解决方案:Native, Web和Hybrid优缺陷分析 4 1.2.5国内外应用现状 6 1.2.6 研究现状总结 7 1.3研究目标与内容 7 1.3.1多窗口浏览器模式的实现机制 7 1.3.2跨域交互即缓存处理方法...
  • 柔性事务解决方案:TCC(两阶段型、补偿型) 支付宝 分布式事务服务 DTS 一 分布式事务服务 DTS二 分布式事务服务 DTS三 支付宝 分布式事务服务 DTS四 支付宝架构师眼里的高可用与容灾架构演进 蚁金服...
  • 网上有解决方案说,打开gradle.properties,添加如下内容:android.enableAapt2=false 在2018年之后使用“android.enableAapt2=false”来关闭AAPT2是行不通的,这个方法已经过时 第二种解决方案 在命令行输入,...
  • 中国独立开发者项目列表 聚合所有中国独立开发者的项目 程序员版点这里: 程序员版的项目需要用命令行或写一点代码。主版面(这里)是给普通用户用的,打开即用,无需命令行或编程基础 1. 为什么有这个表 ...

空空如也

空空如也

1
收藏数 20
精华内容 8
关键字:

区域电商解决方案